LoginSignup
Misaku
@Misaku (Misaku suzuki)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Java勉強中です、計算機を作っています。

javaで計算機を作っています。

sum が答えになり最後に表示されます。
数字を入力されると number へ格納されて、
計算方法(+,-,*,/)を入力すると type へ入力されます
それらを繰り返し、 = を入力すると繰り返しを抜けるようにしました

sum が最初0の状態で number と計算されてしまうせいなのか
1 + 1 = 1
1 * = 0
100 + 1 = 100
というような感じになってしまいます。

package calculator2;

import java.util.Scanner;

public class Calculator2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int sum = 0;

        //ループ
        type : while (true) {
            System.out.print("number or = ");
            String input = scanner.nextLine();
           

            //=が入力されたらループ終
            if (input.equals("=")) break;

            //数字の場合(数字以外はtry catchで対応)
            try {
                System.out.print("+ - * / =  :");
                String type = scanner.nextLine();
                int number = Integer.parseInt(input);
                //それぞれのケース
                switch(type) {
                case "+":
                    sum += number;
                    break;
                case "-":
                    sum -= number;
                    break;
                case "*":
                    sum *= number;
                    break;
                case "/":
                    sum /= number;
                    break;
                case "=":
                	
                	break type;
                default :
                    //sum = Integer.parseInt(input);
                    break type;
                }



                //それ以外はエラーになるのでメッセ表示
            } catch (NumberFormatException e) {
                System.out.println("Invalid input. Please enter a valid number.");
            }
        }

        //結果表示
        System.out.println("Sum: " + sum);
        scanner.close();
    }
}

どなたか正しい計算をできるように知恵を貸していただきたいです、
chatGPTにも通してみましたが回答は得られるものの、それらのコード修正をしても
計算結果に変化が見られません。

0

1Answer

数値入力と演算子の処理のタイミングが不自然です。

100 + 1 =において、
100 +のタイミングでcase "+"が実行されて、sum +=によりsumが100となり、
1 =のタイミングでcase "="が実行されますが、演算処理が無いため、100が出力されます。


2Like

Comments

  1. @Misaku

    Questioner

    ありがとうございます!

Your answer might help someone💌