Java 为什么可以';t我们使用Integer.parseInt(args[0])而不是Scanner
当我使用Java 为什么可以';t我们使用Integer.parseInt(args[0])而不是Scanner,java,Java,当我使用Scanner时,它运行正常,但我使用了Integer.parseInt(args[0])时出现了一个错误 Scanner sc = new Scanner(System.in); try { int row = sc.nextInt(); System.out.println("please enter col "); int col = sc.nextInt(); sc.close(); fo
Scanner
时,它运行正常,但我使用了Integer.parseInt(args[0])
时出现了一个错误
Scanner sc = new Scanner(System.in);
try {
int row = sc.nextInt();
System.out.println("please enter col ");
int col = sc.nextInt();
sc.close();
for (int i = 1;i<= row; i++) {
for (int j = 1; j <= col; j++) {
System.out.print("B");
}
System.out.println();
}
} catch( NumberFormatException e) {
e.printStackTrace();
}
System.out.println();
args[]包含启动程序时(通常在控制台上调用程序后)提供给程序的参数
您是否为程序提供了参数?我将您的第二个代码片段粘贴到新创建的类的
main
方法中。修复了一个简单的打字错误(缺少右括号)。我从命令提示符(shell)以以下方式运行该类:
java com.stackoverflow.richaojha.parseargs.ArgsParseIntDemo 2 3
产出为:
BBB
BBB
您注意到它从命令行很好地读取了数字2和3。所以如果这是你想要的,你可以。当然,这与从标准输入中读取不同,就像您的第一个代码片段一样。这些代码片段所做的事情根本不同-您正在比较苹果和橙子。此代码会抛出什么错误?因为扫描仪读取
系统中的,而args[0]
不会(这是您程序的初始运行时参数)。要回答标题中的问题,您可以!您可以使用它来阅读第一个命令行参数,前提是有一个并且它符合int
的语法。它在线程“main”java.lang.ArrayIndexOutOfBoundsException:0 at Problems.Trangle.main中引发异常(Trangle.java:109)但我在线程“main”java.lang.ArrayIndexOutOfBoundsException:0 at Problems.Trangle.main(Trangle.java:109)中遇到了这个异常,这听起来好像是因为您没有提供任何命令行参数,就像我在回答中的命令行上所做的那样。如果您没有提供,main()
将接收长度为0的args
数组,因此当您尝试从数组中取出元素0时,您已经在数组之外并获得该异常。如果您是从IDE运行程序,则肯定也会有一种方法提供命令行参数。方法因IDE而异(Eclipse与IntelliJ IDEA或Netbeans中的情况不同)。
BBB
BBB