0

だから私はJavaが初めてです。ユーザー入力をテストするためにスキャナーを使用して、いくつかの if ステートメントをいじっています。プログラムを実行すると、4 つの if ステートメントのうち 3 つが機能します。4 番目が 3 番目に実行されます... なぜそうなのかわかりません。これが私のコードです。うまくいけば、皆さんにいくつかの提案があります。

    import java.io.*;
    import java.util.Scanner;

    public class TestFile5
    {
        public static void main(String[] args) throws IOException
    {
    //Have two choices? Simple and complicated?  Simple example = input (X) input.  Complicated = below
    Scanner user_input = new Scanner(System.in);

    System.out.println("Choose calculation type: Long or Short");

    String choicetype;
    System.out.print("Type: ");
    choicetype = user_input.next();

    String selection;
    if(choicetype.equals("Long"))
    {
        System.out.println("Selection: Long");
        System.out.println(" ");

        System.out.println("This is a calculator");
        System.out.println("First select type of function");
        System.out.println("1: Addition");
        System.out.println("2: Subtraction");
        System.out.println("3: Multiplication");
        System.out.println("4: Division");

        System.out.print("Selection: ");
        selection = user_input.next();



        if(selection.equals("Addition"))
        {
            System.out.println("Enter two numbers to add");
            int first_number;
            System.out.print("1: ");
            first_number = user_input.nextInt();
            int second_number;
            System.out.print("2: ");
            second_number = user_input.nextInt();

            System.out.println(first_number + second_number);

            System.exit(0);
        }
        if(selection.equals("Subtraction"))
        {
            System.out.println("Enter two numbers to subtract");
            int first_number;
            System.out.print("1: ");
            first_number = user_input.nextInt();
            int second_number;
            System.out.print("2: ");
            second_number = user_input.nextInt();

            System.out.println(first_number - second_number);

            System.exit(0);
        }
        if(selection.equals("Multiplication"));
        {
            System.out.println("Enter two numbers to multiply");
            int first_number;
            System.out.print("1: ");
            first_number = user_input.nextInt();
            int second_number;
            System.out.print("2: ");
            second_number = user_input.nextInt();

            System.out.println(first_number * second_number);

            System.exit(0);
        }
        //Does Not work.  Trys to multiply
        if(selection.equals("Division"))
        {
            System.out.println("Enter two numbers to divide");
            int first_number;
            System.out.print("1: ");
            first_number = user_input.nextInt();
            int second_number;
            System.out.print("2: ");
            second_number = user_input.nextInt();

            System.out.print("Answer: ");
            System.out.print(first_number / second_number);

            System.exit(0);
        }
    }
    if(choicetype.equals("Short"))
    {
        System.out.println("Selection: Short");
        System.out.println("");
    }
  }
}
4

1 に答える 1

2

質問に答えるために-実装できるifステートメントの最大量はありません。

次のエラーがあるため、コードが機能していないと思われます。

if(selection.equals("Multiplication"));

「;」があってはいけません そこで - if ステートメントを終了し、上記の if が true でないすべての場合に乗算ブロックを実行させます (System.exit(0) のおかげで - プログラムがこれらの「if」のそれぞれに exit を持っていなかった場合、このエラーにより、任意のオプションが選択されるたびに、その乗算ブロックのコードが実行されます)。


サイドノート:

さらに、このコードには、else if または switch ステートメントのほうが適している可能性があることに注意してください。

多数の「if」がある場合、複数のケースが true の場合、両方が実行されます。それが「if」の後に「else if」が続く場合、チェーン内の 1 つだけが実行されます。

これは、別の実行可能なオプションである switch ステートメントに関する簡単なチュートリアルです。

http://www.homeandlearn.co.uk/java/java_switch_statements.html

また、コード行がすべてのブロックで共有されている場合は、その行をすべてのシナリオの最後に配置することをお勧めします。たとえば、System.exit(0) は 4 つの if のそれぞれの最後で発生します。冗長性を削減するには、その行をこれらのオプションの一番下に移動するのが最適です。「部門」の「}」の直後です。場合。必須ではありません。

于 2013-01-16T19:31:15.530 に答える