我试着写一些程序,这个程序用于大写句子中每个单词的第一个字母。对于某些人和某些人的工作不起作用,我不知道为什么,提前谢谢。
import java.util.Scanner;
public class javaexercises {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String a;
char b[];
System.out.println("Enter some word ");
if(scan.hasNextLine()){
a = scan.nextLine();
b = a.toCharArray();
b[0] = Character.toUpperCase(b[0]);
for(int i=0;i<b[i];i++){
if(Character.isWhitespace(b[i])){
b[i+1] = Character.toUpperCase(b[i+1]);
}
}
System.out.println(b);
scan.close();
}
}
}
当我输入时:
q q q q q q q q q q q q q q q q q
得到:
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:31 在javaexercises.main(javaexercises.java:15)
当我输入时:
dsad dwqdqw d qqw dqwqddqw dq dq wdq dq wdqd q dq wqd qw dq d
及其获得:
Dsad Dwqdqw D Qqw Dqwqddqw Dq Dq wdq dq wdqd q dq wqd qw dq d
程序在一定长度后停止大写字母?,我不知道。
答案 0 :(得分:1)
这里有两个小问题,都在评论中注明,但感觉会在答案中向您展示演示。
1)如果您的输入String
末尾有空格,则会导致ArrayIndexOutOfBoundsException
。
使用trim()
方法更改输入; a = scan.nextLine().trim();
。
2)您使用b[i]
结束循环,但应该是b.length()
。
for (int i = 0; i < b.length; i++) {