abstract class Bench{
abstract void bench(); public final long repeat(int count)
{
 long start=System.currentTimeMillis();
 for(int i=0;i<count;i++)
 bench();
 return (System.currentTimeMillis()-start);
}
}class MethodBench extends Bench{
    
void bench(){}
public static void main(String[] args)
{
 int count=Integer.parseInt(args[0]);
 long time=new MethodBench().repeat(count);
 System.out.println(count+"methods in"+time+"milliseconds");
}
}运行:
javac Bench.java
javac MethodBench.java
java MethodBench 1("1"是数字)
系统输出:1methods in0milliseconds是对的.args[0]表示运行此class的第一个参数
运行:java MethodBench 12345
12345methods in0milliseconds
应该打印出的是:1methods in0milliseconds
这是怎么回事?
而且当我运行java MethodBench l("l"是字母)
系统会出现错误提示.这有是为什么?

解决方案 »

  1.   

    而且当我运行java MethodBench l("l"是字母)
    可你的程序里int count=Integer.parseInt(args[0]);
    类型转换异常.
      

  2.   

    System.out.println(count+"methods in"+time+"milliseconds");//注意你打印的结果上面你输入的参数是12345,所以
    count = 12345 
    + "methods in" + 0 + "milliseconds" =12345methods in0milliseconds
      

  3.   

    args[0]表示运行此class的第一个参数
    运行:java MethodBench 12345
    12345methods in0milliseconds
    应该打印出的是:1methods in0milliseconds
    这是怎么回事?为什么是1methods in0milliseconds呢,你输入的参数args[0]的值是12345啊
    在程序运行后通过int count=Integer.parseInt(args[0]);把字符串12345转换得到的count就是12345啊而且当我运行java MethodBench l("l"是字母)
    你输入字母,而Integer.parseInt(args[0]);得到的是int型,怎么能不错呢