2017-06-12 76 views
-6

当我用Scanner其运行正常但我用的是Integer.parseInt(args[0])有错误。为什么我们不能使用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(); 

通过使用Integer.parseInt()有错误。我不明白Integer.parseInt(args[0])也转换为整数。

try{ 

    for (int i = 1;i<= Integer.parseInt(args[0]); i++) { 
     for (int j = 1; j <= Integer.parseInt(args[1]; j++) { 
      System.out.print("B");  

     } 
     System.out.println(); 
    } 
} catch(NumberFormatException e) { 
    e.printStackTrace(); 
} 
System.out.println(); 
+6

这些代码片段做了根本不同的事情 - 你在比较苹果和橘子。 –

+2

这段代码抛出什么错误? –

+3

因为扫描器读取'System.in',而'args [0]'没有(它是您程序的初始运行时参数)。 – dasblinkenlight

回答

0

ARGS []包含(调用它在控制台上后通常)

你给的参数到程序启动时,你给你的程序的参数?

0

我将第二个代码片段粘贴到新建类的main方法中。修复了一个简单的错字(缺少右括号)。

java com.stackoverflow.richaojha.parseargs.ArgsParseIntDemo 2 3 

输出是:在我从我的命令提示符(外壳)这样跑类

BBB 
BBB 

你注意到它的命令行读取数字2和3很好。所以如果这是你想要的,你可以。这与阅读标准输入有所不同,因为您的第一个片段确实如此。

+0

但我在线程“main”java.lang.ArrayIndexOutOfBoundsException:0 \t at Problems.Trangle.main(Trangle.java:109) –

+0

听起来好像是因为你没有提供任何命令行参数,就像我在命令行中做的那样。当你不这样做时,'main()'将会收到一个长度为0的'args'数组,当你试图从中取出元素0时,你已经在数组之外并且得到了这个异常。 –

+0

如果您正在从IDE运行程序,则必然会有一种提供命令行参数的方法。做的方法因IDE而异(在Eclipse中它与IntelliJ IDEA或Netbeans中的不同)。 –

相关问题