카테고리 없음

20240730 개인과제 Lv1. 코드 다시 짜보면서 하나하나 풀어서 해석해보기

ddh1713 2024. 7. 30. 11:28
package calculator;

import java.util.ArrayList;
import java.util.Scanner;

public class App { public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
//        int[] results = new int[10];
//        int count = 0;

        ArrayList<Integer> results = new ArrayList<>();

Scanner sc = new Scanner(System.in);

선언, 생성 및 대입

Scanner : 클래스명, sc : 변수명

new : 생성자, Scanner : java.util 에서 import 해옴

System.in

 

ArrayList<Integer> results = new ArrayList<>();

선언, 생성 및 대입

변수 results 를 선언, ArrayList<>(); 를 생성하고 results 라는 변수에 대입

 

 while (true) {  // true 를 쓰면 while 문을 조건없이 무한 반복한다는 의미
                System.out.println("첫 번째 숫자를 입력하세요: ");
                // Scanner 를 사용하여 양의 정수를 입력받고 적합한 타입의 변수에 저장한다.
                int num1 = sc.nextInt();
                System.out.println("두 번째 숫자를 입력하세요: ");
                // Scanner 를 사용하여 양의 정수를 입력받고 적합한 타입의 변수에 저장한다.
                int num2 = sc.nextInt();

                // 사칙 연산 기호를 적합한 타입으로 선언한 변수에 저장한다. (charAt(0))
                System.out.println("사칙 연산 기호를 입력하세요: ");
                char operator = sc.next().charAt(0);
                sc.nextLine();

                int result = 0;
                // 제어문을 활용하여 위 요구사항을 만족할 수 있게 구현한다.

                switch (operator) {
                    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 :
                        System.out.println("연산이 불가능합니다.");
                }
                System.out.println(result);
//                if (count == 10) {
//                    for (int i = 1; i < 10; i++) {  // 1칸씩 땡길꺼라 1부터 돌린다.
//                        results[i - 1] = results[i];
//                    }
//                    results[9] = result;
//                }   else {
//                    results[count++] = result;
//                }



                // 결과를 ArrayList에 저장
                results.add(result);

                // remove 입력시 삭제
                System.out.println("가장 먼저 저장된 연산 결과를 삭제하시겠습니까? (remove 입력 시 삭제)");
                if(sc.nextLine().equals("remove")){
                    results.remove(0);
                }

                System.out.println("저장된 연산결과를 조회하시겠습니까? (inquiry 입력 시 조회)");
                String inquiry = sc.nextLine();
                // iter -> 향상된 for 문 자동완성 키
                if (inquiry.equals("inquiry")) {
                    for (Integer i : results) {
                        System.out.println(i);
                    }
                }




                System.out.println("더 계산하시겠습니까? (exit 시 입력종료)");
                String end = sc.nextLine();
                if (end.equals("exit")) {
                break;
                }

            }

}
}

while (조건문) { 연산 }

(조건문) = true 인 동안에, { 연산 } 을 수행하며 while 문을 반복

 

System.out.println( "첫 번째 숫자를 입력하세요 : ");

// "첫 번째 숫자를 입력하세요 : " 를 출력

int num1 = sc.nextInt();

변수 num1(정수형)을 선언하고, 입력받은 값(Int 형)을 대입

 

System.out.println("두 번째 숫자를 입력하세요 : ");

// "두 번째 숫자를 입력하세요 : " 를 출력

int num2 = sc.nextInt();

변수 num2(정수형)을 선언하고, 입력받은 값(Int 형)을 대입

 

System.out.println("사칙 연산 기호를 입력하세요 : ");

char operator = sc.next().charAt(0);

입력받은 값의 0번째 문자를 변수 operater (문자형)에 대입

 

sc.nextLine();

엔터 값을 입력받음

 

int result = 0;

변수 result 값을 선언하고, 0을 대입(초기화)

 

switch문 = switch (피연산자)  { case (조건) : (연산) }

 

switch (operator) {

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 :

System.out.println("다시 입력해주세요.");

 

}

System.out.println(result);

 

// break;    해당 case의 연산문이 끝났다는 것을 알려주어서 switch문을 종료

// default:  (연산)  => 아무 것도 만족하지 않을 때 수행, 없다는 생략 가능

 

 

result.add(result);

변수 result (연산의 결과값)을 ArrayList (컬렉션) 에 저장

 

System.out.println( " 가장 먼저 저장된 연산 결과를 삭제하시겠습니까? (Remove 입력시 삭제) " );

if(sc.nextLine().equals("remove")){ 

                                                       results.remove(0);

                                                      }

// 입력받는 값이 "remove" 일 때, results (배열)에서 0번째 값을 삭제

 

System.out.println( " 저장된 연산결과를 조회하시겠습니까? (inquiry 입력 시 조회) " );

String inquiry = sc.nextLine();

// 변수 inquiry (문자열)을 선언

// 입력되는 값을 변수 inquiry 에 대입

// iter -> 향상된 for 문 자동완성 키

 

if (inquiry.equals("inquiry")){

   for (Integer i : results) {

          System.out.print(i);

                                       }

                                           }

// 변수 inquiry 에 입력된 값(문자열)이 "inquiry" 라면, for 문을 수행

// 향상된 for 문 (foreach 문) = for ( 변수타입 변수명 : 배열 ) { 연산 }

// for 의 (조건)을 만족하는 동안 {연산}을 수행

// {연산} = 변수 i 값을 출력

 

System.out.println(" 더 계산하시겠습니까? " (exit 시 입력 종료)" );

String end = sc.nextLine();

// 개행문자가 입력되기 전까지의 값(문자열)을 변수 end 에 대입(저장)

 

if (end.equals("exit"){

                                  break;

                                  }

// 변수 end 값이 "exit" 와 같다면, while문을 break;