1

我正在编写一个简单的 java 和 bash 程序,但它不起作用。让我知道哪里错了。

重击:

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

爪哇:

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");
            }
    }
}

我得到的错误是:

线程“主”java.lang.NumberFormatException 中的异常:对于输入字符串:“[1..100]”在 java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在 java.lang.Integer.parseInt(Integer. java:492) 在 java.lang.Integer.parseInt(Integer.java:527) 在 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 回答