Switch - 线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0

时间:2017-02-10 13:12:54

标签: java exception switch-statement

我在这个测试用例程序中遇到过这个问题:

[{"Day":"0","Hour":"1","Subject":"Computing"},
{"Day":"0","Hour":"3","Subject":"Computing"},
{"Day":"0","Hour":"7","Subject":"Computing"},
{"Day":"1","Hour":"1","Subject":"Physics"},
{"Day":"1","Hour":"5","Subject":"Computing"},
{"Day":"1","Hour":"9","Subject":"Physics"},
{"Day":"1","Hour":"11","Subject":"Physics"},
{"Day":"2","Hour":"1","Subject":"Computing"}]

我该如何解决?

2 个答案:

答案 0 :(得分:1)

例外情况告诉您在运行时您的args数组没有任何条目。

您可以通过调用类似

的JVM来更改它
java TestCase A B C 

换句话说:该数组保存启动时为JVM提供的参数。命令行上没有参数......最终以空数组结束。

或者提供另一种观点:您的代码包含有关传入数据的两个假设:

  1. 使用args [0] 要求该数组至少包含一个条目
  2. 使用....charAt(0) 要求第一个条目至少为一个字符
  3. 猜猜:这不一定是真的!

    你学到了关于编程的第一个非常有价值的课程:不要指望运行时的“现实”只是符合你应该的样子。

    含义:当数据来自外部时,第一步是验证它符合您的期望。像:

    if (args.length > 0) {
     ... process input
    } else {
     tell user: no input
    

    类似于你打算做的字符串处理!

答案 1 :(得分:0)

确保在运行程序时向程序发送参数:java TesteCase A

此外,一般情况下,您不应该信任用户输入,因此我建议您首先检查args的长度。一旦你知道它不是空的,你可以尝试阅读它。