Quest
[과제] Scanner
_유니
2022. 10. 21. 17:55
첫 과제가 주어졌다
혼자 하려니까 패키지 생성부터 막힘 ...
문제 별로 클래스 파일 생성해야 하는데 파일 한 개 생성해서 여기에 4개 메소드 구현함 ㅎ
그리고 변수는 값에 의미를 부여할 목적으로 사용하기 때문에
변수 생성할 때 의미를 부여한 변수를 사용하라고 하셨다
그러면 프로그램 소스를 조금 더 가독성 있는 소스로 만들 수 있다고 한다
오히려 문제 풀이는 금방 끝냈다
아 마지막 문제 빼고요,,
문제 1. 이름, 성별, 나이, 키를 사용자에게 입력받아 각각의 값을 변수에 담고 출력하세요.
package com.yh.practice1.func;
import java.util.Scanner; // import문 선언
public class VariablePractice1 {
public void inputTest1() {
Scanner sc = new Scanner(System.in); // Scanner 객체 생성
System.out.print("이름을 입력하세요 : ");
String name = sc.nextLine(); // 문자열을 엔터 전까지 입력받는 메소드
System.out.print("성별을 입력하세요(남/여) : ");
char gender = sc.nextLine().charAt(0); // 문자열에서 index에 해당하는 단일문자 추출
System.out.print("나이를 입력하세요 : ");
int age = sc.nextInt(); // 정수를 입력받는 메소드
System.out.print("키를 입력하세요(cm) : ");
double height = sc.nextDouble(); // 실수를 입력받는 메소드
System.out.println("키 " + height + "cm인 " + age + "살 " + gender + "자 " + name + "님 안녕하세요");
sc.close(); // Scanner 사용 종료
}
}
이름을 입력하세요 : 홍길동
성별을 입력하세요(남/여) : 남
나이를 입력하세요 : 20
키를 입력하세요(cm) : 180.5
키 180.5cm인 20살 남자 홍길동님 안녕하세요
문제 2. 키보드로 정수 두 개를 입력받아 두 수의 합, 차, 곱, 나누기한 몫을 출력하세요.
package com.yh.practice1.func;
import java.util.Scanner; // import문 선언
public class VariablePractice2 {
public void inputTest2() {
Scanner sc = new Scanner(System.in); // Scanner 객체 생성
System.out.print("첫 번째 정수 : ");
int num1 = sc.nextInt(); // 정수를 입력받는 메소드
System.out.print("두 번째 정수 : ");
int num2 = sc.nextInt(); // 정수를 입력받는 메소드
System.out.println("더하기 결과 : " + (num1 + num2));
System.out.println("빼기 결과 : " + (num1 - num2));
System.out.println("곱하기 결과 : " + (num1 * num2));
System.out.println("나누기 결과 : " + (num1 / num2));
sc.close(); // Scanner 사용 종료
}
}
첫 번째 정수 : 30
두 번째 정수 : 8
더하기 결과 : 38
빼기 결과 : 22
곱하기 결과 : 240
나누기 결과 : 3
문제 3. 키보드로 가로, 세로 값을 실수형으로 입력받아 사각형의 면적과 둘레를 계산하여 출력하세요.
계산 공식) 면적 : 가로 * 세로 / 둘레 : (가로 + 세로) * 2
package com.yh.practice1.func;
import java.util.Scanner; // import문 선언
public class VariablePractice3 {
public void inputTest3() {
Scanner sc = new Scanner(System.in); // Scanner 객체 생성
System.out.print("가로 : ");
double width = sc.nextDouble(); // 실수를 입력받는 메소드
System.out.print("세로 : ");
double height = sc.nextDouble(); // 실수를 입력받는 메소드
System.out.println("면적 : " + (width * height));
System.out.println("둘레 : " + ((width + height) * 2));
sc.close(); // Scanner 사용 종료
}
}
가로 : 14.2
세로 : 54.1
면적 : 768.22
둘레 : 136.6
문제 4. 영어 문자열 값을 키보드로 입력받아 문자에서 앞에서 세 개를 출력하세요.
package com.yh.practice1.func;
import java.util.Scanner; // import문 선언
public class Variablepractice4 {
public void inputTest4() {
Scanner sc = new Scanner(System.in); // Scanner 객체 생성
System.out.print("문자열을 입력하세요 : ");
String message = sc.nextLine(); // 문자열을 엔터 전까지 입력받는 메소드
System.out.println("첫 번째 문자 : " + message.charAt(0)); // 문자열에서 0번째 단일문자 추출
System.out.println("두 번째 문자 : " + message.charAt(1)); // 문자열에서 1번째 단일문자 추출
System.out.println("세 번째 문자 : " + message.charAt(2)); // 문자열에서 2번째 단일문자 추출
sc.close(); // Scanner 사용 종료
}
}
문자열을 입력하세요 : cherry
첫 번째 문자 : c
두 번째 문자 : h
세 번째 문자 : e
이 문제에서 어려웠던 건 글자를 어떻게 뽑아낼까 고민하다가
String형 변수 str 생성 후에 한 글자씩 잘라 char 변수를 생성했다...
System.out.print("문자열을 입력하세요 : ");
String str = sc.nextLine();
char ch = str.charAt(0);
System.out.println("첫 번째 문자 : " + ch );
char ch1 = str.charAt(1);
System.out.println("두 번째 문자 : " + ch1 );
char ch2 = str.charAt(2);
System.out.println("세 번째 문자 : " + ch2 );
이것도 틀린 답은 아니지만 코드는 짧을수록 잘 짠 코드라고 하셨다
내 코드는 굳이 귀찮게 char 변수를 하나하나 생성한 거다 ㅋㅎ