2017-06-12 25 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中的不同)。 –

相關問題