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
'코딩 연습장 > JAVA' 카테고리의 다른 글
자바 4장 연습문제(클래스와 객체)-2 (0) | 2021.03.19 |
---|---|
자바 4장 연습문제(클래스와 객체)-1 (0) | 2021.03.19 |
자바 3장 연습문제(반복문)-3 (0) | 2021.03.18 |
자바 3장 연습문제(반복문)-2 (0) | 2021.03.18 |
자바 3장 연습문제(반복문)-1 (0) | 2021.03.18 |