0

所以我对java很陌生。我一直在搞乱一些使用扫描仪测试用户输入的 if 语句。当我运行程序时,四个 if 语句中有三个起作用。第四次作为第三次运行......我不知道这是为什么。这是我的代码。希望大家给点建议。

    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 语句并导致在上述 ifs 不正确的所有情况下执行乘法块(感谢 System.exit(0) - 如果程序在每个“ifs”中都没有退出,由于此错误,每次选择任何选项时都会执行乘法代码块)。


边注:

此外,值得注意的是 else ifs,甚至是 switch 语句,可能更适合这段代码。

当你有一堆“ifs”时,如果有多个 case 为真,它们都会执行。如果它是一个“if”,然后是“else ifs” - 链中只有一个会执行。

这是关于 switch 语句的快速教程,另一个可行的选择:

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

此外,如果一行代码在所有块之间共享,最好将该行放在所有场景的末尾。例如,System.exit(0) 发生在四个 if 中的每一个的末尾 - 为了减少冗余,最好将该行向下移动到这些选项的底部 - 就在“Division”的“}”之后案子。只是一个很好的练习,不是必需的。

于 2013-01-16T19:31:15.530 回答