Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么可以';t我们使用Integer.parseInt(args[0])而不是Scanner_Java - Fatal编程技术网

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