我在尝试用二维数组编写一个基本程序时遇到了困难。我想让它在搜索时匹配多个结果时,返回所有相关结果。在本例中,我试图使 "CIS101 "同时返回 [0][i]
和 [4][i]
. 我看到一些关于创建对象或分组数组的信息,但我不知道如何在这里正确应用它们。任何帮助都将是非常感激的。
import java.util.*;
class TimesAndInstructors{
public static void main(String[] args) {
final int Courses = 5;
final int Details = 3;
String[][] CourseInfo = new String[Courses][Details];
CourseInfo[0][0] = "CIS101";
CourseInfo[0][1] = "Mon 9 a.m.";
CourseInfo[0][2] = "Farrel";
CourseInfo[1][0] = "CIS210";
CourseInfo[1][1] = "Mon 11 a.m.";
CourseInfo[1][2] = "Patel";
CourseInfo[2][0] = "MKT100";
CourseInfo[2][1] = "Tues 8:30 a.m.";
CourseInfo[2][2] = "Wong";
CourseInfo[3][0] = "ACC150";
CourseInfo[3][1] = "Tues 6 p.m.";
CourseInfo[3][2] = "Deitrich";
CourseInfo[4][0] = "CIS101";
CourseInfo[4][1] = "Fri 1 p.m.";
CourseInfo[4][2] = "Lennon";
System.out.println("Enter college course ID: ");
Scanner input = new Scanner(System.in);
String CourseID = input.nextLine();
String ClassTime;
String Instructor;
ClassTime = FirstClass(CourseInfo, CourseID);
Instructor = Instructor(CourseInfo, CourseID);
if(ClassTime!= null){
System.out.println("Course name: " + CourseID
+ "\nProfessor name: " + Instructor
+ "\nFirst class: " + ClassTime);
}else{
System.out.println("Invalid Entry:"
+ "\nCourse ID is 3 letters followed by 3 numbers.");
}
}
private static String Instructor(String[][] CourseInfo, String CourseID) {
String Professor = null;
boolean found = false;
for (int i = 0; i < CourseInfo.length && !found; i++){
if (CourseInfo[i][0].equals(CourseID)){
Professor = CourseInfo[i][2];
found = true;
}
}
return Professor;
}
private static String FirstClass(String[][] CourseInfo, String CourseID) {
String Time = null;
boolean found = false;
for (int i = 0; i < CourseInfo.length && !found; i++){
if (CourseInfo[i][0].equals(CourseID)){
Time = CourseInfo[i][1];
found = true;
}
}
return Time;
}
}
你可以使用 ArrayList
作为返回类型。如果它是空的,那么你就知道没有找到匹配的信息。下面的代码是为您的 Instructor
方法,你也可以采用其他方法。
private static ArrayList<String> Instructor(String[][] courseInfo, String courseID) {
ArrayList<String> professors = new ArrayList<>();
for (int i = 0; i < courseInfo.length; i++)
if (courseInfo[i][0].equals(courseID))
professors.add(courseInfo[i][2]);
return professors;
}