2015-10-20 54 views
-3

我是Java的100%新手,目前正在開發一門課程。我正在做一個模擬程序,根據預先定義的代碼測試用戶輸入I.E.一個密碼(失落的程序中的數字),但我遇到困難(見下文)任何幫助將不勝感激。我得到的主要錯誤是與if else語句...代碼中的某處發生錯誤

import java.util.Scanner; 

public class Lost 
{ 
    public static void main(String[] args) 
    { 
     String myNumber; 
     myNumber = "4815162342" ; 

     // create Scanner to obtain input from command window 
     Scanner input = new Scanner(System.in); 


     // prompt user for input and obtain value from user 
     System.out.print("Enter numbers..."); 


     // if...else is nested 

     if (result == myNumber); 
      // if result numbers, 
      System.out.print("...You've just saved the world for now!!"); 
     else 
      System.out.print("BOOM!!!!"); 


    } // end main 
} // end class Lost 

// put notes here: 
+1

您的'if'語句被終止,您的輸入永遠不會被讀取,您的'結果'也不會被初始化..你有沒有想過嘗試帶有編譯器警告的IDE? – kasoban

+1

可能的重複[如何比較Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – weston

+0

因此,你剛纔打破了所有這一切運行它。一點一點地建立起來。 – weston

回答

0

擺脫分號的以下行的後面:

if (result == myNumber);

您可能要習慣用大括號括住單個語句ifs。我發現當花括號已經存在時,當你需要向這樣一個分支添加多個語句時,它不太容易出錯。

2

您的代碼有以下問題:

  1. if (result == myNumber);;在一個空的身體最終結果的if語句。這就是爲什麼你得到一個錯誤else沒有if。刪除;
  2. result是不是在你的代碼
  3. 定義您比較String變量與==。如果參考文獻是相同的,那將會比較。如果你想比較String內容使用

    if (result.equals(myNumber)) 
    
  4. 你似乎缺少讀取用戶輸入的部分。它看起來像

    String result = ""; 
    if (input.hasNextLine()) 
        result = input.nextLine(); 
    
1

讓發生在你的代碼

import java.util.Scanner; 

public class Lost { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     String myNumber; 
      myNumber = "4815162342" ; 

      // create Scanner to obtain input from command window 

      System.out.print("Enter numbers..."); 

      Scanner input = new Scanner(System.in); 

      String result = input.next(); 


      // prompt user for input and obtain value from user 



      // if...else is nested 

      if (result.equals(myNumber)) 
       // if result numbers, 
       System.out.print("...You've just saved the world for now!!"); 
      else 
       System.out.print("BOOM!!!!"); 

    } 

} 
1

這是你可以做什麼:

import java.util.Scanner; 
public class Lost 
{ 
    public static void main(String[] args) 
    { 
     String myNumber = "4815162342"; 
     Scanner scn= new Scanner(System.in); 

     System.out.print("Enter numbers..."); 
     String result = scn.nextLine(); //receive input with string (Line 10) 

     if (result.equals(myNumber))  //compare strings (input vs myNumber) 
      System.out.println("...You've just saved the world for now!!"); 
     else 
      System.out.println("BOOM!!!!"); 
    } 
} 

如果您選擇接收輸入數字與整數,你將使用scn.nextInt()Integer.parseInt(scn.nextLine())lin e 10,並且結果與muNumber的比較將是(result == myNumber)而不是result.equals(myNumber)

從現在開始,爲了您的基本理解,比較int等基本類型時,使用==。比較對象和字符串時,請使用.equals()

+0

這個代碼塊應該是OP問題的有效解決方案嗎?如果是:你測試過了嗎? – Tom

+1

@Tom感謝提醒..哈哈。現在沒事了。 – user3437460

相關問題