금일 진행사항
객체지향 복습
인텔리제이 기능 학습(단축키👍)
과제 해설 공부
내 과제 비교해보기
public class App { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Calculator calculator = new Calculator(); // 객체 생성 int i = 0; while (true) { System.out.print("첫 번째 숫자를 입력하세요: "); int num1 = sc.nextInt(); System.out.print("계산할 부호를 입력하세요( +, -, *, /, % ): "); char sign = sc.next().charAt(0); System.out.print("두 번째 숫자를 입력하세요: "); int num2 = sc.nextInt(); if((sign == '/' || sign == '%') && (num2 == 0)) { System.out.println("0으로 나눌 수 없습니다"); continue; } calculator.setElement(num1, num2, sign); // calculator.sum(num1, num2, sign); int result = calculator.getResult(); if(sign == '+' || sign == '-' ){ System.out.println("결과: " + result); } else if(sign == '*'){ System.out.println("결과: " + result); } else if (sign == '/' || sign == '%') { System.out.println("결과: " + result); } else{ System.out.println("부호가 잘못 입력 되었습니다."); } // switch는 사용했으니 else if 사용해보기 String emptybox = sc.nextLine(); // enter 제거용 System.out.print("더 계산하시겠습니까?(exit입력시 종료) "); String word = sc.nextLine(); if (word.equals("exit")) { System.out.println("계산을 종료합니다..."); break; } i++; } System.out.print("계산 목록을 보시겠습니까?(list 입력시 출력): "); String list = sc.nextLine(); // 계산기록 행렬 불러오기 ArrayList<String[]> data = calculator.getData(); if (list.equals("list")) { for (int count = 0; count<=i; count++) { System.out.println( data.get(count)[0] + " " + data.get(count)[1] + " " + data.get(count)[2] + " = " + data.get(count)[3] ); } } int delenum = 0; while(i >= 0){ System.out.print("오래된 계산 기록을 지우시겠습니까?(delete 입력시 삭제): "); String dele = sc.nextLine(); if (dele.equals("delete")) { System.out.println( ++delenum + "번째 기록을 삭제합니다..."); calculator.removeResult(); i--; } else{ break; } } System.out.println("프로그램을 종료합니다..."); } }
public class Calculator { private ArrayList<String[]> data = new ArrayList<>(); private int index = 0; //계산기록을 저장할 2차원 행렬과 행번호를 매기기 위한 index private int result = 0; private int num1; private int num2; private char sign; public void setElement(int num1, int num2, char sign){ this.num1 = num1; this.num2 = num2; this.sign = sign; sum(); } private void sum () { switch (sign) { case '+': result = num1 + num2; break; case '-': result = num1 - num2; break; case '*': result = num1 * num2; break; case '/': result = num1 / num2; break; case '%': result = num1 % num2; break; default: break; } data.add(new String[4]); data.get(index)[0] = String.valueOf(num1); data.get(index)[1] = String.valueOf(sign); data.get(index)[2] = String.valueOf(num2); data.get(index)[3] = String.valueOf(result); // TODO : 문자형 배열에 정수값이 안들어가서 정수를 문자형으로 변환후 대입 index++; } public int getResult() { return this.result; } // 계산 결과 return public ArrayList<String[]> getData() { return this.data; } // 계산기록 return getter 적용 public void removeResult() { data.remove(0); } }
과제 해설
public class Calculator { private final List<Integer> results = new ArrayList<>(); public Integer calculate(int num1, int num2, char operator) { int result; switch (operator) { case '+' -> result = num1 + num2; case '-' -> result = num1 - num2; case '*' -> result = num1 * num2; case '/' -> { if (num2 == 0) { throw new ArithmeticException("0으로 나눌 수 없습니다."); } result = num1 / num2; } default -> throw new IllegalArgumentException("지원하지 않는 연산자입니다."); } results.add(result); return result; } public List<Integer> getResults() { return results; } public void removeResult() { results.remove(0); } }
public class App { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Calculator calculator = new Calculator(); String exit = ""; while (!exit.equals("exit")) { // 양의 정수 (0을 포함) System.out.println("첫 번째 숫자를 입력하세요: "); int num1 = sc.nextInt(); if (num1 < 0) { System.out.println("0을 포함한 양의 정수만 입력 가능합니다."); return; } System.out.println("두 번째 숫자를 입력하세요: "); int num2 = sc.nextInt(); if (num2 < 0) { System.out.println("0을 포함한 양의 정수만 입력 가능합니다."); return; } System.out.println("사칙연산 기호를 입력하세요: "); char operator = sc.next().charAt(0); Integer result = calculator.calculate(num1, num2, operator); System.out.println("결과: " + result); System.out.println("현재 저장된 결과들: " + calculator.getResults()); System.out.println("가장 먼저 저장된 결과를 삭제하시겠습니까? (yes), 다음 단계는 아무 값 입력"); String answer = sc.next(); if ("yes".equals(answer)) { calculator.removeResult(); System.out.println("가장 먼저 저장된 결과 삭제 후: " + calculator.getResults()); } System.out.println("종료를 원하면 exit / 계속하려면 아무 글자 입력"); exit = sc.next(); } System.out.println("계산기를 종료합니다."); sc.close(); } }