我的代码获取用户输入的第一个和最后一个单词并将它们转换为大写。但是,当用户输入“”或“java”(不带空格的单词)时,会弹出错误。我找不到错误的原因。
Scanner input = new Scanner(System.in);
String s = input.nextLine();
String first = "";
String last = "";
String end = s;
int count = 0;
for (int i = 0;i<s.length()-1;i++) {
if (s.charAt(i) == ' ') {
count++;
}
if (count == 0) {
end = s.toUpperCase();
}
else if (count > 0)
first = s.substring(0,s.indexOf(' '));
last = s.substring(s.lastIndexOf(' ')+1);
end = (first.toUpperCase() + " " + s.substring(first.length()+1,s.indexOf(last)) + " " +last.toUpperCase());
}
System.out.println(count);
最佳答案
String first = s.substring(0,s.indexOf(' '));
String last = s.substring(s.lastIndexOf(' ')+1);
您的代码导致了问题。如果 String
中不存在空格,则 indexOf(' ')
将返回 -1。显然你不能在 0 和 -1 之间进行子串。在对字符串进行子串之前,您需要检查 ' '
是否存在于 String
中。
关于java - 我找不到 "java.lang.StringIndexOutOfBoundsException"错误的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55641122/