2013-01-16 89 views
0

所以我對java很陌生。我一直在使用掃描儀來測試用戶輸入的if語句。當我運行該程序時,四條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(""); 
    } 
    } 
} 

回答

2

要回答這個問題 - 沒有最大數量的if語句可以實現。

我懷疑你的代碼是不工作,因爲有這樣的錯誤:

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

不應該有一個「;」在那裏 - 它終止if語句,並導致乘法塊在所有情況下,如果上述不是真實的(感謝System.exit(0) - 如果程序沒有在每個「ifs」退出,由於此錯誤,多次代碼塊將在每次執行任何選項時執行)。


旁註:

此外,它應該是值得一提的是別的IFS,甚至switch語句,可能是更適合於這一段代碼。

當你有一堆「ifs」,如果不止一種情況是真的,它們都會執行。如果它是一個「如果」後跟「其他ifs」 - 鏈中只有一個會執行。

下面是switch語句的快速教程,另一種可行的選擇:

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

而且,如果某行代碼在所有模塊共享,最好是放線,在結束所有場景。例如,System.exit(0)發生在四個if的每一個的末尾 - 爲了減少冗餘,最好將該行下移到這些選項的底部 - 緊接在「Division」的「}」之後,案件。只是一個很好的練習,不是必需的。

+0

謝謝。我有點認爲這將是明顯的東西 – Schmidty15

+0

沒問題 - 有時它只是需要另一雙眼睛看到這些東西。 – PinkElephantsOnParade