간단히 반복문과 if문을 활용해 만든 계산기
기능
- 사칙연산 가능
- 계산한 값을 ArrayList를 통해 저장가능
- removeFirst()를 통해 첫번째 값 지우기 가능( 임의 자리값을 넣는 기능은 x)
- n/0일때 오류를 피하기 위해 예외처리
- 여태 계산한 값들 불러오기
package calculator;
import java.util.*;
public class App {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Double> list = new ArrayList<>(); // 연산된 값을 list에 저장
while (true) {
System.out.println("첫 번째 숫자를 입력하세요:");
double num1 = sc.nextDouble();
System.out.println("두 번째 숫자를 입력하세요:");
double num2 = sc.nextDouble();
sc.nextLine(); // num1, num2 뒤의 줄 바꿈 문자 처리
System.out.println("사칙연산의 기호를 입력하세요 (+, -, *, /)");
char operator = sc.nextLine().charAt(0);
double result = 0;
boolean validOperation = true; //유효하지 않은 연산자를 구별하기 위해 boolean타입을 사용
// 사칙연산 switch
switch (operator) {
case '+':
result = num1 + num2; // 더하기 연산
break;
case '-':
result = num1 - num2; // 빼기 연산
break;
case '*':
result = num1 * num2; // 곱하기 연산
break;
case '/': // 나누기 연산
if (num2 != 0) { // 0으로 나눌 수 없음
result = num1 / num2;
} else {
System.out.println("0으로 나눌 수 없습니다. 다시 입력하세요.");
validOperation = false;
}
break;
default:
System.out.println("유효하지 않은 연산자입니다. 다시 입력하세요.");
validOperation = false; // 유효하지 않은 연산자
break;
}
if (!validOperation) {
continue; // 오류가 발생했으므로 루프의 시작으로 돌아감
}
list.add(result); //결과는 list로 추가됨
System.out.println("결과는 : " + result);
// 추가 명령어 처리
System.out.println("가장 먼저 저장된 연산 결과를 삭제하시겠습니까? (remove 입력)");
String std = sc.nextLine();
if (std.equalsIgnoreCase("remove")) {
if (!list.isEmpty()) {
list.remove(0); // 처음 저장된 결과를 삭제
System.out.println("처음 저장된 연산 결과가 삭제되었습니다.");
} else {
System.out.println("삭제할 결과가 없습니다.");
}
}
// 저장된 연산결과 조회
System.out.println("저장된 연산결과를 조회 (inquiry 입력 시 조회)");
String stf = sc.nextLine();
if (stf.equalsIgnoreCase("inquiry")) {
if (list.isEmpty()) {
System.out.println("저장된 결과가 없습니다.");
} else {
System.out.println("저장된 연산결과:"); //list에서 값을 불러온다
for (Double item : list) {
System.out.println(item);
}
}
}
// 종료 여부 확인
System.out.println("계산기 종료(exit 입력 시 종료)");
String str = sc.nextLine();
if (str.equalsIgnoreCase("exit")) {
System.out.println("계산 종료");
break; // 루프 종료
} else {
System.out.println("계산 계속");
}
}
sc.close(); // Scanner 자원 해제
}
}
예외처리 못하거나 기능을 구현하지 못한 것
- 문자열을 입력할경우 다시 리턴
- 끝에만 종료가능한게 아닌 중간에 들어가는 exit기능
'Java로 이용한 기능' 카테고리의 다른 글
계산기 2 +원의 넓이 값 (0) | 2024.07.29 |
---|