所以我对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("");
}
}
}
答案 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”的“}”之后案件。只是一个很好的练习,不是必需的。