정말 초보입니다 소스코드 문제점 알려주세요~

조회수 69회

자바이구요 원래 계획했던 거는 아주아주 기초 계산기처럼

여러가지 수식을 계산할 수 있도록 하는건데 프로그램 오류는 안나는데

수식 입력하면 결과가 안나오고 아무런 값이 안나와서요

혹시 어느부분이 어떻게 잘못됬는지 짚어주시면 감사하겠습니다.

예 : 3 + 5 * 6 / 5 를 입력하면 결과가 나와야하는데

그냥 공백만 나와서요 고수님들 부탁드립니다!!

package main;

import java.util.Scanner;

public class Main4 {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.print("수식을 입력하세요");
    Scanner s = new Scanner(System.in);
    int x = s.nextInt();
    while(true)
    {
        String ops = s.next();
        if (ops == null)
        {
            break;
        }
        char op = ops.charAt(0);
        int y = s.nextInt();
        int z = 0;
        switch(op)
        {
        case '+':
            x += y;
            break;
        case '-':
            x -= y;
            break;
        case '*':
        x *= y;
        break;
        case '/':
        x /= y;
        break;
        case '%':
        x %=y;
        break;
        default:
            System.out.println("입력 오류");

        }
    }
        System.out.println(x);
    }

}

1 답변

  • "3 + 5 * 6 / 5" 를 한번에 입력하신건가요?

    코드를 보니 '3' 입력 후 '+' 입력 후 '5' 입력 이렇게 한글자씩만 입력을 해야 돌아갑니다.

    결과가 안나오고 아무런 값이 안나온다고 말씀하셨는데 아마 프로그램이 입력을 기다리느라고 멈춰있을겁니다.

    입력 받는 부분마다 print 문으로 친절하게 안내 문구를 쓰는걸 추천드립니다 :)

    
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
    
        System.out.print("첫번재 숫자를 입력하세요");
        int x = s.nextInt();
    
        System.out.print("연산자를 입력하세요");
        String ops = s.next();
    
        System.out.print("두번째 숫자를 입력하세요");
        int y = s.nextInt();
    
        if (ops == null){
            System.out.print("연산자가 없어요");
            return;
        }
        char op = ops.charAt(0);
        switch(op) {
            case '+':
                x += y;
                break;
            case '-':
                x -= y;
                break;
            case '*':
                x *= y;
                break;
            case '/':
                x /= y;
                break;
            case '%':
                x %=y;
                break;
            default:
                System.out.println("입력 오류");
        }
        System.out.println(x);
    }
    
    

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.