为什么我的 for 只处理第一个变量?

Why is my for only working on the first variable?

如果我输入 COSC 1337,我编写的代码可以正常工作 但是一旦我输入数组中的任何其他元素,它将显示我的错误消息而不是时间和日期

我做错了什么?

import java.util.Scanner;

public class Schedule {
    public static void main(String[] args) {
        String[][] arr = new String[4][2];
        arr[0][0] = "COSC 1337";
        arr[1][0] = "HIST 1301";
        arr[2][0] = "MATH 1302";
        arr[3][0] = "PHIL 1320";
        arr[0][1] = "Wednesdays 12pm-3pm";
        arr[1][1] = "Fridays 8am-11am";
        arr[2][1] = "Mondays 6pm-9pm";
        arr[3][1] = "Saturdays 10am-1pm";

        Scanner in = new Scanner(System.in);
        System.out.println("Enter a Course");
        String userInput = in.nextLine();
        for (int i = 0; i < 4; i++) {
            if (userInput.equalsIgnoreCase(arr[i][0])) {
                System.out.println("classes are on: " + arr[i][1]);
                return;
            }
            if (!userInput.equalsIgnoreCase(arr[i][0])) {
                System.out.println("Invalid Course");
                return;
            }
        }

    }

}

您的代码表示:

if strings match
    print message
    return

if strings don't match
    print message
    return

所以你总是 return 在查看第一个元素之后。获得所需内容的一种方法是:

for each string
    if (string matches)
        print "classes on" message
        return
// If we get here we didn't match any string (because we didn't return)
print "didn't match any strings" error message

除了循环中的第一次迭代,您什么都不做。无效课程语句应该在 for 循环之外,并且只有在所有 4 个课程检查都失败时才会被调用

您每次都在循环中同时检查匹配和不匹配。您不需要检查不匹配。如果它到达循环末尾仍未找到匹配项,则它一定是无效的。试试这个代码更改:

for (int i = 0; i< 4 ; i++)
{
    if (userInput.equalsIgnoreCase( arr[i][0]))
    {
        System.out.println("classes are on: " + arr[i][1]);
        return;
    }
}
System.out.println("Invalid Course");
return;

您在 else 条件下返回,所以您实际做的是跳过执行并从函数返回。我已经以相同的格式为您更正了您的代码

import java.util.Scanner;
public class Schedule {
            public static void main(String[] args)
            {
                String [][]arr = new String[4][2];
                arr[0][0] = "COSC 1337";
                arr[1][0] = "HIST 1301";
                arr[2][0] = "MATH 1302";
                arr[3][0] = "PHIL 1320";
                arr[0][1] = "Wednesdays 12pm-3pm";
                arr[1][1] = "Fridays 8am-11am";
                arr[2][1] = "Mondays 6pm-9pm";
                arr[3][1] = "Saturdays 10am-1pm";

                Scanner in = new Scanner(System.in);
                System.out.println("Enter a Course");
                String userInput = in.nextLine();
                for (int i = 0; i< 4 ; i++)
                {
                    if (userInput.equalsIgnoreCase( arr[i][0]))
                    {
                        System.out.println("classes are on: " + arr[i][1]);
                        return;
                    }

                }
                 System.out.println("Invalid Course");

            }


}