我打算让用户输入10个名字并将其作为数组。 然后,我将再次让用户输入他们想要搜索的名称,然后显示搜索结果。 但是,当我搜索不在数组中的内容时,结果仍会显示出来。我的代码有问题吗?希望有人能提供帮助,谢谢。
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.");
}
}
}
谢谢。
答案 0 :(得分:4)
您的代码存在一些问题:
一个。一旦看到名称等于:
,就需要中断for循环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.
湾你不用使用&#34; =&#34;来检查条件。 (在你的情况下,它意味着你首先赋值的两件事,然后你的if总是评估为真),而不是如果它会这样:
if(check){
System.out.println("Found Result: "+sname);
} else{
System.out.println("Not Found.");
}
答案 1 :(得分:0)
通过check == true check == false替换check = true和check = false。