2016-09-05 45 views
-4

我打算讓用戶輸入10個名稱並將其作爲數組。 然後我再讓用戶輸入他們想要搜索的名字,然後顯示搜索結果。 但是,當我搜索不在數組中的東西時,結果仍顯示出來。我的代碼有問題嗎?希望任何人都可以幫忙,謝謝。我的其他陳述不是有效的,但如果陳述是。 Java

import java.util.Scanner; 
import java.util.*; 

public class Main 
{ 
static List<String> name = new ArrayList<String>(); 

public static void main (String[]args) 
{ 
    Scanner input=new Scanner(System.in); 
    Scanner input2=new Scanner(System.in); 

    int i; 
    String sname; 

    System.out.println("Please enter 10 student names."); 
    for(i=1;i<11;i++){ 
    name.add(input.next()); 
    } 

    System.out.println("Namelist is " + name); 
    String[] namearray = name.toArray(new String[0]); 
    System.out.println("Arraylist is "+ Arrays.toString(namearray)); 

    System.out.println("Please enter the names that you want to search."); 
    sname=input2.nextLine(); 

    search(namearray, sname); 
} 

public static void search(String[]namearray,String sname) 
{ 
    int i; 
    boolean check; 

    for(i = 0; i < namearray.length; i++){ 
      if(namearray[i].equals(sname)) 
      check=true; 
      else 
       check=false; 
    } 

    if(check=true){ 
     System.out.println("Found Result: "+sname); 
    } 
    else if (check=false){ 
     System.out.println("Not Found."); 
    } 
} 
} 

謝謝。

+1

'='是賦值,沒有比較。 (1)不要在布爾值時使用'== true',只要使用'if(check)',(2)不要檢查反轉,只需使用'else'。 – chrylis

+0

@chrylis它的工作原理!非常感謝! –

回答

4

幾個問題與您的代碼:

a。一旦看到名稱等於:

boolean check = false; 
for(i = 0; i < namearray.length; i++){ 
     if(namearray[i].equals(sname)) { 
     check=true; 
     break; 
     } 
}//assuming you are doing it for study purpose or i would use name.contains(sname); rather than for loop. 

b。你不檢查使用「=」的條件(在你的情況下,它意味着兩件事情你第一次分配值,然後你如果結果始終爲true),而不是是否會做這樣的:

if(check){ 
    System.out.println("Found Result: "+sname); 
} else{ 
    System.out.println("Not Found."); 
} 
+0

謝謝!它的工作現在! –

0

通過check == true check == false替換check = true和check = false。

+0

它給了我無效的賦值運算符錯誤... –