요구 사항
- ⬜ 양의 정수(0 포함)를 입력받기
- ⬜ Scanner를 사용하여 양의 정수 2개(0 포함)를 전달 받을 수 있습니다.
- ⬜ 양의 정수는 각각 하나씩 전달 받습니다.
- ⬜ 양의 정수는 적합한 타입으로 선언한 변수에 저장합니다.
- ⬜ 사칙연산 기호(➕,➖,✖️,➗)를 입력받기
- ⬜ Scanner를 사용하여 사칙연산 기호를 전달 받을 수 있습니다.
- ⬜ 사칙연산 기호를 적합한 타입으로 선언한 변수에 저장합니다. (charAt(0))
- ⬜ 위에서 입력받은 양의 정수 2개와 사칙연산 기호를 사용하여 연산을 진행한 후 결과값을 출력하기
- ⬜ 키워드 : if switch
- ⬜ 사칙연산 기호에 맞는 연산자를 사용하여 연산을 진행합니다.
- ⬜ 연산 기호를 구분하기 위해 제어문을 사용합니다. (예를 들면 if, switch)
- ⬜ 연산 오류가 발생할 경우 해당 오류에 대한 내용을 정제하여 출력합니다.
- ⬜ ex) “나눗셈 연산에서 분모(두번째 정수)에 0이 입력될 수 없습니다.“
- ⬜ 반복문을 사용하되, 반복의 종료를 알려주는 “exit” 문자열을 입력하기 전까지 무한으로 계산을 진행할 수 있도록 소스 코드를 수정하기
- ⬜ 키워드 : 무한으로 반복, 수정하기 (처음부터 무한 반복 ❌, 위 스텝별로 진행하며 수정)
- ⬜ 반복문을 사용합니다. (예를 들어, for, while…)
- ⬜ 하나의 클래스에서 진행
문제 풀이
더보기
App
package lv1;
import java.util.InputMismatchException;
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
try {
System.out.print("첫 번째 숫자를 입력해주세요 : ");
int firstNum = scanner.nextInt();
System.out.print("사칙 연산 기호를 입력해주세요 : ");
char operator = scanner.next().charAt(0);
System.out.print("두 번째 숫자를 입력해주세요 : ");
int secondNum = scanner.nextInt();
scanner.nextLine();
if (firstNum < 0 || secondNum < 0) {
System.out.println("양의 정수만 입력하세요");
} else {
switch(operator) {
case '+': {
System.out.println(firstNum + " + " + secondNum + " = " + (firstNum + secondNum));
break;
}
case '-': {
System.out.println(firstNum + " - " + secondNum + " = " + (firstNum - secondNum));
break;
}
case '*': {
System.out.println(firstNum + " * " + secondNum + " = " + (firstNum * secondNum));
break;
}
case '/': {
if (secondNum != 0) {
System.out.println(firstNum + " / " + secondNum + " = " + ((double) firstNum / secondNum));
} else {
System.out.println("0으로 나눌 수 없습니다.");
}
break;
}
default: {
System.out.println("사칙 연산자를 입력해주세요.");
}
}
}
} catch (InputMismatchException e) {
System.out.println("숫자만 입력해주세요!");
scanner.nextLine();
}
System.out.print("더 계산하시겠습니까? (exit 입력 시 종료) ");
if(scanner.nextLine().equals("exit")) return;
}
}
}
첫 번째 숫자와 두 번째 숫자를 입력받을 때, 숫자 외에 다른 문자를 받으면 InputMismatchException 오류가 생긴다.
- try~catch 문을 통해 예외 처리를 진행하였다.
Scanner 클래스는 문자 하나를 받는 메서드가 없다. 따라서 scanner.next() 메서드를 통해 문자열로 받은 후, 문자열 메서드인 charAt(index)를 사용한다.
- charAt(index) : index 번째에 있는 문자를 반환한다.
'JAVA' 카테고리의 다른 글
[Java] toString() (0) | 2025.04.18 |
---|---|
[Java] Lv_2 계산기 프로젝트 (0) | 2025.04.18 |
[Java] 스트림(Stream) (0) | 2025.04.17 |
[Java] 익명 클래스란? (0) | 2025.04.17 |
[Java] 람다(Lamda) (0) | 2025.04.17 |