【问题标题】:Returning multiple matches from a 2d array [closed]从二维数组返回多个匹配项[关闭]
【发布时间】:2020-05-02 18:44:11
【问题描述】:

我在尝试使用二维数组编写的基本程序时遇到困难。我正在尝试这样做,以便如果搜索匹配多个结果,则返回所有相关结果。在这种情况下,我试图让“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;
    }
}

【问题讨论】:

  • 请向我们展示您尝试在二维数组中进行搜索的尝试以及什么不起作用。
  • 我的想法是在 else 语句之前将以下内容作为第二个 if 合并。 if(ClassTime = CourseInfo[Courses][Details]){ System.out.println("课程名称:" + CourseID + "\n教授姓名:" + Instructor + "\n第一堂课:" + ClassTime);
  • @EdwinSalinas - 如果this 问题的答案之一解决了您的问题,您可以通过将其标记为已接受来帮助社区。接受的答案有助于未来的访问者自信地使用该解决方案。查看meta.stackexchange.com/questions/5234/… 了解如何操作。

标签: java arrays search


【解决方案1】:

您可以使用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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    相关资源
    最近更新 更多