我一直在嘗試編寫一個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