If语句的最大数量?

时间:2013-01-16 19:27:04

标签: if-statement statements

所以我对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("");
    }
  }
}

1 个答案:

答案 0 :(得分:2)

要回答这个问题 - 您无法实现最大数量的if语句。

我怀疑您的代码无效,因为存在此错误:

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

不应该有“;”在那里 - 它终止了if语句并导致multiply块在所有上面的ifs都不为真的情况下执行(感谢System.exit(0) - 如果程序没有在每个“ifs”中退出,由于此错误,每次选择任何选项时,都会执行乘法代码块。)


旁注:

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

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

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

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

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