任务是检查句子中每个单词的数字,找到具有最大数字的单词,同时最大功率为3。我在这里做了所有操作,直到最后一个单词以数字结尾都可以正常工作
例如:
输入:Iam8 you64 asjkj125 asdjkj333 heis216:OutOfBounds
输入:Iam8 you64 asjkj125 asdjkj333 heis216s:heis216s是目标词
然后它将超出范围,我已经(至少我认为是)发现了哪里,但是我不知道如何在不更改此计算思路的情况下避免这种情况。
这是发生这种情况的代码:
for (int i = 0; i < r.length(); i++) {
current+= r.charAt(i);
if (r.charAt(i) == ' ' || i = r.length()-1) {
for (int j = 0; j < current.length(); j++) {
while ((int) current.charAt(j) > 47 && (int) current.charAt(j) < 58) {
//如果最后
最后一个单词的字符是一个数字,j递增,最后
越界。
br = br + current.charAt(j);
j++;
}
Complete code
最佳答案
即使处理完最后一个字符串后,也会处理current
,因此会发生StringIndexOutOfBoundsException
异常。因为正在处理current
字符串,所以应该在其中检查长度为j
的current
。像这样的j < current.length()
在while
循环中添加while ( j<current.length() && (int) current.charAt(j) > 47 && (int) current.charAt(j) < 58)
的检查。
关于java - 超出范围的异常问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47975401/