这是我在java上的第一次尝试,我在运行它时遇到了一些问题:
以下是代码:
public class Assignment1 {
public static void main(String args[]) {
int c = Integer.parseInt(args[1]);
if (c > args[0].length()) {
System.out.println("the index" + args[1] + "is out of range !");
} else {
System.out.println("The character is" + args[0].charAt(c - 1) + " !");
}
}
}
编译时出错(线程中的异常" main" java.lang.ArrayIndexOutOfBoundsException:1 在Assignment1.main(Assignment1.java:3) 但是认为这只是因为我没有输入任何东西,并且当试图在cmd中执行它时,c:\ blah blah ... \ java Assignment1.java 1234 5"并得到之前提到的错误...
知道代码有什么问题吗?我的设置?我? 感谢。
答案 0 :(得分:2)
问题出在args[0].charAt(c-1)
,因为c-1
是4
。
您的args[0]
为1234
,因此charAt(4)
超出范围。
charAt(0)
返回1
charAt(1)
返回2
charAt(2)
返回3
charAt(3)
返回4
答案 1 :(得分:1)
您正在获取ArrayIndexOutOfBoundsException,因为您正在访问命令行参数而不检查实际上是否有任何参数。
您需要检查用户是否提供了正确的参数,如果没有,请打印如何调用可执行文件的消息,如下所示
public class Assignment1 {
public static void main(String args[]) {
if (args.length == 2) {
int c = Integer.parseInt(args[1]);
if (c > args[0].length()) {
System.out.println("the index " + args[1] + " is out of range !");
} else {
System.out.println("The character is " + args[0].charAt(c - 1) + " !");
}
}
else {
System.out.println("Usage: java Assignment1 <argument1> <argument2>\n E-g java Assignment1 abcd 4");
}
}
}
调试时,可以将命令行参数传递给应用程序,如下所示:
在命令行中,您必须运行
javac Assignment1.java
第一。然后你必须执行
java Assignment1 <argument1> <argument2>
或者在Eclipse IDE中,打开“运行配置”窗口,并在“程序参数”框中提供两个参数。然后运行它。这将有效