发布网友 发布时间:2022-04-23 08:48
共6个回答
热心网友 时间:2022-06-18 14:13
你应该养成差错的习惯。这个错误很明显的告诉给你了。主方法main中lang包的错误。
然后还给你提示了StringindexOutofBoundsException,翻译过来就是字符串索引越界。也就是我们说的数组越界,后面单词的意思我想不用我说。异常,而不是error。程序提示这个异常的话就说明你的字符串数组定义和实际长度有偏差。
排错方法是在字符串内容改变后,直接输出你定义的字符串的长度看看。
就是直接打印system.out.pritln(字符串.length),然后你就知道你错在哪里了。
养成一个良好的差错习惯。排错能力也是体验一个开发人员的开发能力的方面。多查查异常的出处,为什么会出这样的异常,你就会知道怎么避免,代码页会越来越规范的。
热心网友 时间:2022-06-18 14:14
String index out of range: 18
说明String数组的索引超出范围了
for(int i=0;i<w.length;i++){
sum += (id.charAt(i)-'0')*w[i];//(id.charAt(i)-'0')字符转数字
}
循环中不应该是w.length,而是id.length()
热心网友 时间:2022-06-18 14:14
sum += (id.charAt(i)-'0')*w[i];//(id.charAt(i)-'0')字符转数字
上面错了, id的长度为18,问题是w的长度明显超过18
热心网友 时间:2022-06-18 14:15
StringIndexOutOfBoundsException
API查下下就知道了,属于数组越界。
热心网友 时间:2022-06-18 14:16
StringIndexOutOfBoundsException 下标越界,String index out of range: 18 字符串没有index为18的字符; 错误在charAt()出错。请检查循环。。
热心网友 时间:2022-06-18 14:16
下标越界啊……