본문 바로가기

과제를하면서 트러블슈팅

계산기 만들기

반응형
SMALL

안녕하세요~ 첫번째 과제였던

계산기 만들기를 하면서 있던 트러블

그리고 그걸 해결해나가는 모습을 보여드리겟습니다.

1-1의 조건이였습니다

여기는 쉬웟죠 그래서 저는

package com.example.calculator;

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("양의 첫번째정수를 입력해주세요.");
        int inputfir = sc.nextInt();
       
        System.out.println("양의 두번째정수를 입력해주세요.");
        int inputsec = sc.nextInt();

이 코드를 이용했습니다.

사실 처음에는 Sca 만쳐도 Scanner가 나오니 이런식으로 했죠.

풀로 치긴 어려웠을거같습니다

sout만쳐도

System.out.println나오는데요.

그러고 int 부분은 여기에 숫자를 입력하게 만드는것입니다.

이제 1-2인 사칙연산 기호를 넣는거였습니다.

이것도 뭐 위와같은데

System.out.println("사칙연산 기호를 입력해주세요.");
char option = sc.next().charAt(0);

우선 system.out.println을 해줘서 입력해주세요를 합니다

그후 char을 사용해줘서 문자 1개만 저장해줍니다 그런데 sc.next()를붙혀주고 charAt(0)을써서

첫번째 문자만 적용되게 하였습니다.

이제 1-3 인데

위의내용을보고 저는 switch를 사용해줫습니다

int result = 0;
switch (option) {
    case '+':
        result = inputfir + inputsec;
        break;
    case '-':
        result = inputfir - inputsec;
        break;
    case '*':
        result = inputfir * inputsec;
        break;
    case '/':
        if (inputsec != 0) {
            result = inputfir / inputsec;
        } else {
            System.out.println("0으로 나눌수없습니다.");
            break;
        }
        break;
    case '%':
        if (inputsec != 0) {
            result = inputfir % inputsec;
        } else {
            System.out.println("0으로 나눌수없습니다.");
            break;
        }
        break;
    default:
        System.out.println("사칙연산으로 입력해주세요");
        break;
}
System.out.println(result);

솔직히 1-3이 제일 쉬웟던거같습니다

/,%에보면 0부분에 if문을 써줘서 만약 inputsec !=0 이면

원래대로나오게해주고 아니면

계산을끝내라 라고 해놧습니다.

이제 1-4 입니다.

솔직히 여기가 제일 어려웠습니다.

do while 문을 이용하여 반복문 만드는것까진 쉬웟습니다.

발단:

그런데 이제 이위에까지는 우리가 1+3=4까진 완료한건데 우리가 만들것은 계산기죠

전개:

그럼 어떻게해야됩니까 1+3=4 인데 어? 나는 *10을해주고싶어

해서 4*10을해서 40이 되야하죠

그런데 저는 1*10 해서 10이되버리는 거죠

1-1.위기:

게다가 exit를 치면 이것이 작동을 멈춰야되는데 아무리쳐도 두번째 숫자입력칸으로 넘어가버리는것입니다.

그래서 저는 흠 이걸 어떡해 하면좋지? 어떻게 해결을해볼까 해서

while messege != "exit"를 쓰다가

!= 의 아래부분에 "노란색~ "표시가 뜨게됩니다. 그래서 마우스포인트를 올려보니

equals()가 떠있는걸 확인했죠 아 이것을 적용해보자

하고 while (messege.equals("exit"));

를 이용하여 해봣습니다.

그러나 여전히 exit 로 안되는걸 확인해봣습니다

혹시몰라 "exit"를쳐보니 이반복문이 끝나는걸 확인되었습니다.

하지만 저는 exit를 쳐서 끝내는걸 목표로 하고있었기에

1-2.절정:

흠 뭐가문제지 뭐가이상한것인가 하고 보니 

아분명 아까 나는  != 를썻잖아

그럼 messege 앞에 !를 써보자 하고

1-3.결말:

적용을해보았습니다. 그러니 exit 를 치니 적용이 잘되는걸 볼수있었습니다.

2-1 위기

그후 두번째 문제였던 1+3=4 후에 4*10=40 이안되는 이것

아무리봐도 분명 반복은되고있는걸 확인했습니다.

흠 왜그럴까 이럼안되는데 하고 뭐가문제인지 찾아보고있었습니다.

2-2절정

아그래서 실행을해서 계속 계산을 하면서 뭐지 하다가

아잠만 나는 반복만시켜줫지 반복한것을 고정시켜주지 않았잖아

라는 생각을 하게됩니다.

2-3결말:

해서 아래쪽 계산이 된부분 바로아래에 이것을 고정시켜줘볼까?

하고

inputfir= result;를해줘서

restult 값을 첫번째 숫자값으로 보내준후

그첫번째값과 두번째숫자와 사칙연산을

합치게하여 결과값을 도출해보니 잘되는걸확인할수있엇는데.

도중에 뭔가 보충해주면 좋을것들이 보이기시작했습니다.

1/4 하면 0이 뜨는걸 확인하게 된것이죠

그래서 모든 int들을 double 로 적용해주고

만일 뭔가 잘못눌러서 break부분을 가면 실행이 끝나니 되돌아가라라는 뜻으로 필요한부분만 

break를 continue로 바꿔줫죠 해서 만들어진코드가

package com.example.calculator;

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("양의 첫번째정수를 입력해주세요.");
        double inputfir = sc.nextInt();
        String messege = "";
        do {
            System.out.println("양의 두번째정수를 입력해주세요.");
            double inputsec = sc.nextInt();
            System.out.println("사칙연산 기호를 입력해주세요.");
            char option = sc.next().charAt(0);
            double result = 0;
            switch (option) {
                case '+':
                    result = inputfir + inputsec;
                    break;
                case '-':
                    result = inputfir - inputsec;
                    break;
                case '*':
                    result = inputfir * inputsec;
                    break;
                case '/':
                    if (inputsec != 0) {
                        result = inputfir / inputsec;
                    } else {
                        System.out.println("0으로 나눌수없습니다.");
                        continue;
                    }
                    break;
                case '%':
                    if (inputsec != 0) {
                        result = inputfir % inputsec;
                    } else {
                        System.out.println("0으로 나눌수없습니다.");
                        continue;
                    }
                    break;
                default:
                    System.out.println("사칙연산으로 입력해주세요");
                    continue;
            }
            System.out.println(result);
            inputfir = result;
            System.out.println("더 계산하시겟습니까?(exit 입력시 종료)");
            messege = sc.next();
        }while (!messege.equals("exit"));
    }
}

위와같게됩니다

해서 적용을 해보니 아주잘되는것을 보실수있으십니다.

봐주셔서 감사합니다

반응형
LIST

'과제를하면서 트러블슈팅' 카테고리의 다른 글

키오스크 만들기 Lv3  (0) 2025.01.16
키오스크 만들기  (3) 2025.01.15
클래스 구현실습  (4) 2025.01.14
계산기 만들기 Lv2-3,4  (0) 2025.01.10
계산기 만들기 Lv2  (0) 2025.01.09