从一个二维数组中返回多个匹配项[关闭]。

问题描述 投票:-1回答:1

我在尝试用二维数组编写一个基本程序时遇到了困难。我想让它在搜索时匹配多个结果时,返回所有相关结果。在本例中,我试图使 "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;
    }
}
java arrays search
1个回答
0
投票

你可以使用 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.