如果输入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;
}
}
}
}
答案 0 :(得分:0)
您的代码说:
if strings match
print message
return
if strings don't match
print message
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
答案 1 :(得分:0)
除了循环中的第一次迭代之外,你永远不会做任何事情。 Invalid Course语句应该在for循环之外,并且只有在所有4个课程检查都失败时才会被调用
答案 2 :(得分:0)
每次循环都会检查匹配和不匹配。您无需检查是否存在不匹配。如果它在没有找到匹配的情况下到达循环的末尾,则它必须是无效的。试试这个代码更改:
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;
答案 3 :(得分:0)
你正在返回else条件,所以你实际上正在做的是跳过执行并从函数返回。我已经以相同的格式更正了您的代码
var Excel = require("exceljs");