你的第17行代码是 String digit=number.substring(i,i+1);
number是你的命令行输入args[0],而你的i在for循环中最大要到4,i+1就要到5了,既然这样,
那number就最少需要5位才可以保证String的方法substring()不会发生越界的异常啊!
所以你执行的时候应该保证命令行参数至少是5位的,
比如这样执行:java Telephoneword 12345   就可以
如果java Telhponeword 123,那for循环到i=3的时候,第i+1=4位实际不存在数字,substring()方法自然要异常了!

解决方案 »

  1.   

    所以你的代码很不通用,你把17行前面的for()循环改成下面的:
    for(int i=0;i<args[0].length();i++)
    {
    }
    这样args[0]是多少位都可以正常执行了!
      

  2.   

    谢谢大哥帮忙!问题基本解决~代码还有很多问题啊,大哥看看需要怎么改进能让执行效率高一点?比如我输入 2 ,在word文档里得到一堆重复的anullnullnullnull
          .
          .
    bnullnullnullnull
          .
          .
    cnullnullnullnull
          .
          .
    不管是几位熟悉,按5位的莱执行,浪费了很多时间看来还需要很大的改进