我的代码将用户输入的首尾两个单词转换为大写。但是,当用户输入“”或“ 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);
答案 0 :(得分:2)
String first = s.substring(0,s.indexOf(' '));
String last = s.substring(s.lastIndexOf(' ')+1);
您的代码在这里引起了问题。如果您的String
中没有空格,那么indexOf(' ')
将返回-1。您显然不能在0到-1之间进行子字符串化。您需要先对' '
中是否存在String
进行子字符串化。