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

时间:2015-04-29 03:19:33

标签: java arrays for-loop input 2d

如果输入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;
            }
        }

    }

}

4 个答案:

答案 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");