코딩 연습장/JAVA

자바 3장 연습문제(반복문)-4

Do아 2021. 3. 18. 10:02
728x90

2021/03/11(목)

문제)

3-15) 다음은 2개의 정수를 입력받아 곱을 구하는 Multiply 클래스이다.

import java.util.Scanner;

public class Multiply {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.print("곱하고자 하는 두 수 입력 >>");
		int n = scanner.nextInt();
		int m = scanner.nextInt();
		System.out.println(n+"x"+m+"="+n*m);
		scanner.close();
	}
}

다음과 같이 실행할 때 프로그램은 10과 5를 곱해 50을 잘 출력한다.

하지만 다음과 같이 실수를 입력하였을 때 예외가 발생한다.

다음과 같이 실수가 입력되면 정수를 다시 입력하도록 하여 예외없이 정상적으로 처리되도록 예외 처리 코드를 삽입하여 Multuply 클래스를 수정하라.

3-16)컴퓨터와 독자 사이의 가위 바위 보 게임을 만들어보자. 예시는 다름 그림과 같다. 독자부터 먼저 시작한다. 독자가 가위 바위 보 중 하나를 입력하고 <Enter>키를 치면, 프로그램은 가위 바위 보 중에서 랜덤하게 하나를 선택하고 컴퓨터가 낸 것으로 한다. 독자가 입력한 값과 랜덤하게 선택한 값을 비교하여 누가 이겼는지 판단한다. 독자가 가위 바위 보 대신 "그만"을 입력하면 게임은 끝난다.

내 풀이

3-15)

import java.util.InputMismatchException;
import java.util.Scanner;

public class Sw03_15 {
	public static void main(String[] args) throws Exception{
		Scanner scanner =new Scanner(System.in);
		int insertNumber1=0;
		int insertNumber2=0;
		
		do {
			System.out.print("곱하고자 하는 두 수 입력>>");
			
			//예외처리
			try {
				insertNumber1 = scanner.nextInt();
				insertNumber2 = scanner.nextInt();
				System.out.print(insertNumber1+"x"+insertNumber2+"="+insertNumber1*insertNumber2);
				break;
				
				//int값이 아닌 다른값이 들어 갔을때
			}catch(InputMismatchException e) {
				
				//왜 scanner.nextLine만 써주면 문제가 해결되는가?
				//scanner에 이미 입력된 키를 모두 제거하기 위해
				//저장되어있는 값을 제거
				scanner.nextLine();
				System.out.println("실수는 입력하면 안됩니다.");
			}
		}while(true);
	}
}

 

3-16)

package java3;
import java.util.Scanner;
public class Sw03_16 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		//컴퓨터의 값을 배열에 저장
		String[] computer = {"가위", "바위", "보"};
		do {
			
			System.out.println("컴퓨터와 가위 바위 보 게임을 합니다.");
			System.out.print("가위 바위 보!>>");
			String myResult = scan.nextLine();
			if(myResult.equals("그만")) {
				System.out.print("게임을 종료합니다...");
				break;
			}
			//배열을 0~2까지 숫자중 랜덤 배정
			int arrayVal = (int)(Math.random()*3);
			if(myResult.equals("가위")) {
				if(myResult.equals(computer[arrayVal]))
					System.out.println("사용자 = "+ myResult+", 컴퓨터 = "+ computer[arrayVal] +", 비겼습니다.");
				else if(computer[arrayVal].equals("바위")) 
					System.out.println("사용자 = "+ myResult+", 컴퓨터 = "+ computer[arrayVal] +", 컴퓨터가 이겼습니다.");
				else
					System.out.println("사용자 = "+ myResult+", 컴퓨터 = "+ computer[arrayVal] +", 사용자가 이겼습니다.");
			}
			else if(myResult.equals("바위")) {
				if(myResult.equals(computer[arrayVal]))
					System.out.println("사용자 = "+ myResult+", 컴퓨터 = "+ computer[arrayVal] +", 비겼습니다.");
				else if(computer[arrayVal].equals("보")) 
					System.out.println("사용자 = "+ myResult+", 컴퓨터 = "+ computer[arrayVal] +", 컴퓨터가 이겼습니다.");
				else
					System.out.println("사용자 = "+ myResult+", 컴퓨터 = "+ computer[arrayVal] +", 사용자가 이겼습니다.");
			}
			else
				if(myResult.equals(computer[arrayVal]))
					System.out.println("사용자 = "+ myResult+", 컴퓨터 = "+ computer[arrayVal] +", 비겼습니다.");
				else if(computer[arrayVal].equals("가위")) 
					System.out.println("사용자 = "+ myResult+", 컴퓨터 = "+ computer[arrayVal] +", 컴퓨터가 이겼습니다.");
				else
					System.out.println("사용자 = "+ myResult+", 컴퓨터 = "+ computer[arrayVal] +", 사용자가 이겼습니다.");
			
		}while(true);
	}
}

--> 전에 했던 가위 바위 보 게임과 비슷한데

컴퓨터가 출력할 가위, 바위, 보 문자열을 배열에 저장해 놓고 배열을 랜덤으로 꺼내서 사용자가 입력한 문자열과 비교

728x90