任务是检查句子中每个单词的数字,找到具有最大数字的单词,同时最大功率为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字符串,所以应该在其中检查长度为jcurrent。像这样的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/

10-14 11:07