1

単純なjavaおよびbashプログラムを作成していますが、機能していません。どこが間違っているのか教えてください。

バッシュ:

    for i in [1..100]; do 
         echo $i
         java prob2 $i 
    done

Java:

import java.io.*;

public class prob2
{
    public static void main( String[] args )
    {
            int l = args.length;
            if ( l == 1 )
            {
                    int num = Integer.parseInt(args[0]);
                    while ( num != 0 && num != 1)
                            num = num - 2;
                    if ( num == 0 )
                            System.out.println("Even");
                    else if ( num == 1 )
                            System.out.println("Odd");
            }
    }
}

私が得ているエラーは次のとおりです。

スレッド"main"の例外java.lang.NumberFormatException:入力文字列の場合:java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)at java.lang.Integer.parseInt(Integer。 java:492)at java.lang.Integer.parseInt(Integer.java:527)at prob2.main(prob2.java:10)

4

2 に答える 2

4

それはあなたがbashループを行う方法ではありません。これを試して:

for i in `seq 1 100`; do 
     echo $i
     java prob2 $i 
done

余談ですが、数値が奇数か偶数かを判断するためのより高速なアルゴリズムは、2を法として取得することです。

if (num % 2 == 0) {
    System.out.println("Even");
} else {
    System.out.println("Odd");
}
于 2012-11-10T20:45:36.050 に答える
4

配列ブラケットではなく、中括弧を使用する必要があります。

 for i in {1..100}; do 
         echo $i
         java prob2 $i 
    done
于 2012-11-10T20:47:26.073 に答える