为什么这个程序适用于某些人并且不会为其他人工作?

时间:2017-11-28 12:52:18

标签: java arrays

我试着写一些程序,这个程序用于大写句子中每个单词的第一个字母。对于某些人和某些人的工作不起作用,我不知道为什么,提前谢谢。

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

程序在一定长度后停止大写字母?,我不知道。

1 个答案:

答案 0 :(得分:1)

这里有两个小问题,都在评论中注明,但感觉会在答案中向您展示演示。

1)如果您的输入String末尾有空格,则会导致ArrayIndexOutOfBoundsException

使用trim()方法更改输入; a = scan.nextLine().trim();

2)您使用b[i]结束循环,但应该是b.length()

for (int i = 0; i < b.length; i++) {

Try it online!