我想编写一个程序,逐步打印单词,直到出现完整的句子。例如:我需要编写(输入)和输出:
I
I need
I need to
I need to write.
这是我的代码:
public static void main(String[] args) {
String sentence = "I need to write.";
int len = sentence.length();
int numSpace=0;
System.out.println(sentence);
System.out.println(len);
for(int k=0; k<len; k++){
if(sentence.charAt(k)!='\t')
continue;
numSpace++;
}
System.out.println("Found "+numSpace +"\t in the string.");
int n=1;
for (int m = 1; m <=3; m++) {
n=sentence.indexOf('\t',n-1);
System.out.println("ligne"+m+sentence.substring(0, n));
}
}
这就是我得到的:
I need to write.
16
Found 0 in the string.
Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: -1 at
java.lang.String.substring(String.java:1937) at
split1.Split1.main(Split1.java:36) Java Result: 1 BUILD SUCCESSFUL
(total time: 0 seconds)
我不明白为什么 numSpace 不计算空格的出现次数,也不明白为什么我没有得到正确的输出(即使我将 numSpace 替换为 3)。
最佳答案
- 您没有
\t
字符,因此indexOf(..)
返回-1
- 您尝试使用 0 到 -1 之间的子字符串 - 失败
解决方案是检查:
if (n > -1) {
System.out.prinltn(...);
}
关于java - 为什么我会收到 java.lang.StringIndexOutOfBoundsException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7471769/