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.5180.5cm20살 남자 홍길동님 안녕하세요

 

 


 

문제 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 변수를 하나하나 생성한 거다 ㅋㅎ