我一直在尝试编写一个Java程序,它将字符串中每个单词的第一个字母转换为大写字母。现在它看起来是这样的:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:4
package strings;
import java.util.Scanner;
public class small_cap {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the sentence");
String st = sc.next();
String str = " " + st;
int j = 0; char chr = ' ';
for (int i = 0; i < str.length(); i++){
j = i + 1;
chr = str.charAt(j);
if (chr == ' '){
char a = Character.toUpperCase(str.charAt(j));
str = str.replace(str.charAt(j), a);
}
else{
char a = Character.toLowerCase(str.charAt(j));
str = str.replace(str.charAt(j), a);
}
}
System.out.println(str);
}
}
不幸的是我不断收到错误:
java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.charAt(String.java:658)
at small_cap.main(small_cap.java:19)
我实在不明白在代码的任何故障。有人可以指出我要去哪里吗?
似乎很清楚,为什么,你会得到一个索引越界异常,看到的时候我是长 - 1,j是长度,这是过去的字符串的结尾。 –
我也会说你的逻辑看起来很不对。这应该是大写每个单词的第一个字母在一个句子中? –
@c_dubs这个程序应该把一个句子中每个单词的第一个字母大写,其他字母小写,以防万一它们中的一些已经大写。现在我看到了它所走的界限。谢谢! – Satrajit