我的代码如下:class NumberCount
{
protected NumberCount()
{}

public static void main(String[] args)
{
try
{
long num;
int nod = 0;
num = Integer.parseInt(args[0]);
args[0] = args[53];

for (int i = 0 ; num>0; i++)
{
nod += 1;
num = num/10;
}
System.out.println("quantity of the number is :"+nod);
}
catch (NumberFormatException ne)
{
System.out.println("Number is not useful");
}
catch (ArrayIndexOutOfBoundsException ae)
{
System.out.println("Index of array is out of bounds"+ae);
}
}
}
我 输入javac NumberCount.java编译通过后
       java NumberCount 10 运行抛出ArrayIndexOutOfBoundsException异常。这个问题很怪。不知道为什么会抛出异常。
为了求证一下我又输入了java NumberCount 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
还是会出现异常。又哥们说改一下命令行属性里的缓冲区大小。原本命令行的缓冲区大小为50,缓冲数量为4.我改成缓冲区大小为200,缓冲数量为200.还是会出现异常。这个难题请教一下大家。

解决方案 »

  1.   

    java NumberCount 10
    args[0] ==> NumberCount
    args[1] ==> 10
      

  2.   

    你想要处理的参数要从args[1] 开始, 不是从0开始
      

  3.   

    53个参数 从arg[0]到arg[52],arg[53]自然报溢出错
      

  4.   

    你想要处理的参数要从args[1]   开始,   不是从0开始
    测试的话,直接让num=53,循环动作即可,多看看书
      

  5.   

    java   NumberCount   10 
    args[0]   ==>   NumberCount 
    args[1]   ==>   10
      

  6.   

    你再多写一个才行:_)
    java   NumberCount   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   33   34   35   36   37   38   39   40   41   42   43   44   45   46   47   48   49   50   51   52   53 54
      

  7.   

    args[0] = args[53];
    改成:
    args[0] = args[args.length - 1];
    就可以了。我看了一下,下面的这个args[0]好像没有什么意义吧,也没有用到命令行参数第一个是args[0],不是args[1]楼上好像有人说错了,args[1]是第二个参数。