2016-09-05 43 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

它给了我无效的赋值运算符错误... –