为什么我的 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");
}
}
如果我输入 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");
}
}