2017-06-12 7 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

引数[]

はあなたのプログラムに引数を与えていました

(通常はコンソール上でそれを呼び出した後)、それを起動するとき、あなたのプログラムに与える引数が含まれていますか?

0

新しく作成されたクラスのメソッドに2番目のコードスニペットを貼り付けました。シンプルなタイプミスが修正されました(右のブラケットがありません)。私は、コマンドプロンプト(シェル)から、このようにクラスを走った:

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

出力された:

BBB 
BBB 

あなたはそれがうまく、コマンドラインから番号2と3を読み込むことに注意してください。だから、これがあなたの望むものなら、あなたはできます。あなたの最初のスニペットがそうであるように、それは標準入力から読むこととは違うものです。

+0

しかし、私はスレッド "メイン" java.lang.ArrayIndexOutOfBoundsExceptionでthisExceptionを取得しています:0 \t at Problems.Trangle.main(Trangle.java:109) –

+0

これは、私が答えのコマンドラインで行ったようなコマンドライン引数を提供していないためです。そうしないと、 'main()'は長さ0の 'args'配列を受け取ります。したがって、既に要素0を取り出そうとすると、あなたは配列の外にあり、例外が発生します。 –

+0

IDEからプログラムを実行している場合は、コマンドライン引数も提供する方法があります。行う方法はIDEによって異なります(EclipseではIntelliJ IDEAまたはNetbeansとは異なります)。 –

関連する問題