我正在开发一个程序,允许用户使用控制台菜单将各种内容输入到数组中。
将班级学生的实例输入到我已完成并正常工作的数组中。
创建我已经完成的课程详情实例。
在数组中搜索特定学生的详细信息。如果存在具有此名称的学生,它将打印存储在数组中的所有详细信息,如果不存在,则会抛出类似"学生不在课程"。
我只是假设学生名字是唯一的,因为我只需要存储20个。到目前为止,我创建了这种方法似乎并没有起作用。我想我需要使用for
循环而不是binarySearch
,但我不太清楚如何做到这一点,因为没有视频或帖子似乎显示如何使用此循环{{1} 1}}和String
。
这是迄今为止的方法:
Scanner
对此有任何帮助将不胜感激,你会非常喜欢帮助一个卑微的菜鸟:)
答案 0 :(得分:1)
如果您更喜欢进行顺序搜索,可以像这样使用for循环:
private void Search(){
// Create a scanner for input, and get the name for search
Scanner inputScanner = new Scanner(System.in);
System.out.println("Type student name for search:");
String studentName = inputScanner.nextLine();
// use for loop to search array.
for(int i = 0; i < studentArray.length; i++){
if(studentArray[i].getName().equals(studentName)){
// If student was found, print his details and return from this function.
System.out.println(studentArray[i]);
return;
}
}
// If we reach this point, it means the student was never found in the for loop.
System.out.println("Student not found.");
}
有几点需要注意:
Student
个对象,所以我在student对象上调用getName()来比较两个字符串,所以如果存在匹配,我将得到匹配。toString()
。答案 1 :(得分:0)
首先不要做SuppressWarnings。当你开始学习从糟糕的做法开始时,这是一种不好的做法并且不好。
我会使用binarySearch代替你的情况,只需在列表中使用contains方法,如下所示:
List <String> list = new ArrayList();
list.add("one");
list.add("two");
if (list.contains("two")) {
System.out.println("true");
}
此外无需对数组进行排序:)。