当我运行这个程序输出所有以b开头的单词时,为什么会收到溢出异常


import java.util.Scanner;
public class vrzbi {
public static void main(String[]args){
System.out.println("write a sentence");
Scanner input = new Scanner(System.in);
String sentence = input.nextLine();
int j = 0;
for (int i = 1; i < sentence.length(); i++) {
if ( sentence.charAt(i-1) == ' ' && sentence.charAt(i) == 'b'){
j = i;
while (sentence.charAt(j) != ' ' && j<sentence.length()){
System.out.print(sentence.charAt(j));
j++;
}
System.out.println(" ");
}
}
}
}

正确的单词出现了:前兄弟鲍勃有一个男婴输出鲍勃男婴。但在那之后,我在while行得到一个溢出异常错误。

问题是j可以取等于sentence.length()的值,因此在while行中,您应该首先检查j<sentence.length()条件,然后检查sentence.charAt(j) != ' ',因为while条件是从左到右计算的。

更改您的while

while (sentence.charAt(j) != ' ' && j<sentence.length())

while (j<sentence.length() && sentence.charAt(j) != ' ')

最新更新