我在这个测试用例程序中遇到过这个问题:
[{"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"}]
我该如何解决?
答案 0 :(得分:1)
例外情况告诉您在运行时您的args
数组没有任何条目。
您可以通过调用类似
的JVM来更改它java TestCase A B C
换句话说:该数组保存启动时为JVM提供的参数。命令行上没有参数......最终以空数组结束。
或者提供另一种观点:您的代码包含有关传入数据的两个假设:
args [0]
要求该数组至少包含一个条目....charAt(0)
要求第一个条目至少为一个字符猜猜:这不一定是真的!
你学到了关于编程的第一个非常有价值的课程:不要指望运行时的“现实”只是符合你应该的样子。
含义:当数据来自外部时,第一步是验证它符合您的期望。像:
if (args.length > 0) {
... process input
} else {
tell user: no input
类似于你打算做的字符串处理!
答案 1 :(得分:0)
确保在运行程序时向程序发送参数:java TesteCase A
此外,一般情况下,您不应该信任用户输入,因此我建议您首先检查args的长度。一旦你知道它不是空的,你可以尝试阅读它。