我试图将长字符串分隔成每个单词并在Java中按顺序打印它们但它会引发异常StringIndexOutOfBounds
。继承代码,任何输入都受到高度赞赏:
public class SpellingChecker {
public static void test(String str) {
int i=0,j=0,n=str.length();
String temp="";
do{
for(i=j;str.charAt(i)!=' ';i++)
temp+=str.charAt(i);
temp+='\0';
System.out.println(temp);
temp="";
j=i+1;
}while(j<n);
}
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("Enter string for which you want to check spelling : ");
String strng=input.next();
test(strng);
}
}
答案 0 :(得分:2)
这将做你想要的:
String[] words = str.split("\\s+");
StringBuilder temp = new StringBuilder();
for (String word : words)
temp.append(word).append("\0");
答案 1 :(得分:2)
如果我理解了您的问题,您可以重写test(String)
以使用String.split(String)
之类的内容,
public static void test(String str) {
String[] words = str.split("\\s+");
for (String word : words) {
System.out.println(word);
}
}
答案 2 :(得分:2)
您正在使用next()
代替nextLine()
来扫描您的句子。所以你只会得到第一个单词而不是所有的单词..
所以将其改为
String strng = input.nextLine();
接下来,您的test()
方法应该是模板
public static void test(String str) {
String[] words = str.split("\\s+");
for(String word: words) {
System.out.println(word);
//Here decide what you want to do with each word
}
}
答案 3 :(得分:1)
for(i=j;str.charAt(i)!=' ';i++)
temp+=str.charAt(i);
我认为如果字符串中没有任何空格,则超出范围