1

私はJavaとこのフォーラムが初めてです。簡単な電卓のコードを書きました。それは働いています。しかし、(たとえば) "(+, -, *, /)" の代わりに "=" を入れた場合、どうすれば main メソッドを繰り返すことができますか? ループを使うべきですか、それとも何か他のものを使うべきですか? 前もって感謝します!

import java.util.Scanner;

public class SimCal {

    public static int add(int a, int b) {
        return a + b;
    }

    public static int sub(int a, int b) {
        return a - b;
    }

    public static int mul(int a, int b) {
        return a * b;
    }

    public static int div(int a, int b) {
        return a / b;
    }

    public static void main(String[] args) {

        Scanner scan1 = new Scanner(System.in);
        System.out.println("What do you want to do (+, -, *, /)? ");
        String input1 = scan1.nextLine();

        if (!input1.equals("+") && !input1.equals("-") && !input1.equals("*") && !input1.equals("/")) { // if wrong input given
            System.out.println("You must Enter a valid operator");
        } else {
            Scanner scan2 = new Scanner(System.in);
            System.out.println("Enter first number: ");
            int input2 = scan2.nextInt();

            Scanner scan3 = new Scanner(System.in);
            System.out.println("Enter second number: ");
            int input3 = scan3.nextInt();

            if (input1.equals("+")) {
                System.out.println(add(input2, input3));
            } else if (input1.equals("/")) {
                System.out.println(div(input2, input3));
            } else if (input1.equals("-")) {
                System.out.println(sub(input2, input3));
            } else {
                System.out.println(mul(input2, input3));
            }
            scan1.close();
            scan2.close();
            scan3.close();
        }
    }
}
4

1 に答える 1

0

何を尋ねているのか少しわかりませんが、電卓を再度実行することなく繰り返し実行できるようにしたいということは理解しました。これは、ブール値と while ブロックを使用して実現できます。

次に例を示します。

import java.util.Scanner;

public class SimCal {

    public static int add (int a, int b){
        return a+b;
    }
    public static int sub (int a, int b){
        return a-b;
    }
    public static int mul (int a, int b){
        return a*b;
    }
    public static int div (int a, int b){
        return a/b;
    }
    public static boolean done = false;


    public static void main(String[] args){


        Scanner scan1 = new Scanner(System.in);
        Scanner scan2 = new Scanner(System.in);
        Scanner scan3 = new Scanner(System.in);
        while (!done) {
            System.out.println("What do you want to do (+, -, *, /, quit)? ");
            String input1 = scan1.nextLine();

            if (!input1.equals("+") && !input1.equals("-") && !input1.equals("*") && !input1.equals("/") && !input1.equals("quit")) 
            { //if wrong input given
                System.out.println("You must Enter a valid operator");
            } 
            else if (input1.equals("quit")) 
            {
                done = true;
                scan1.close();
                scan2.close();
                scan3.close();
            } 
            else 
            {
                System.out.println("Enter first number: ");
                int input2 = scan2.nextInt();


                System.out.println("Enter second number: ");
                int input3 = scan3.nextInt();

                if (input1.equals("+")) 
                {
                    System.out.println(add(input2, input3));
                } 
                else if (input1.equals("/")) 
                {
                    System.out.println(div(input2, input3));
                } 
                else if (input1.equals("-")) 
                {
                    System.out.println(sub(input2, input3));
                } 
                else 
                {
                    System.out.println(mul(input2, input3));

                }

            }
        }
    }
}

これがお役に立てば幸いです。Andy Turner が述べたように、複数のスキャナーを使用しないようにする必要があります。

編集: 2 つのスキャナーを閉じるのを忘れていました。また、Saurav Sahu が述べたように、スイッチケースはこれを行うためのより良い方法になる可能性があります。

于 2016-10-23T11:31:59.597 に答える