你的第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()方法自然要异常了!
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()方法自然要异常了!
for(int i=0;i<args[0].length();i++)
{
}
这样args[0]是多少位都可以正常执行了!
.
.
bnullnullnullnull
.
.
cnullnullnullnull
.
.
不管是几位熟悉,按5位的莱执行,浪费了很多时间看来还需要很大的改进