TitleCase练习使用JAVA

时间:2016-12-07 08:52:50

标签: java

我只需要对此澄清一下。 我在java上做了一些练习 -

编写一个静态方法,替换所有第一个字母 带有大写字母的字符串中的每个单词。 示例:字符串只是一个字符串---->字符串只是一个字符串

我能够完成所需的输出但是我对这部分代码感到困惑。

这个工作要点:

char j;
if (length > 1) {
    for (int i = 0; i < length; i++) {
        j = str2.charAt(i);
        if (j == ' ') {
            str = str + j + (Character.toUpperCase(str2.charAt(i + 1)));
            i++; //    for skip
        } else {
            str = str + j;
        }
    } 
} else {
    str = "Please enter a string.";
}

然而,当我以这种方式投入时,它不会工作:

Char j, k; 
if (length > 1) {
    for (int i = 0; i < length; i++) {
        j = str2.charAt(i);
        k = str2.charAt(i + 1);
        if (j == ' ') {
            str = str + j + (Character.toUpperCase(k));
            i++; //    for skip
        } else {
            str = str + j;
        }
    }
} else {
    str = "Please enter a string.";
}

有人可以解释一下原因吗?我错过了什么或忽略了什么?

顺便说一句,这是完整的代码:

package exercises.exercisesday3.part1;

import java.util.Scanner;

public class Exercise5CapitalLetters {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.println("Enter source String: ");
String capital = myTitleCase(" " + input.nextLine());

System.out.println(capital);

input.close();
}

public static String myTitleCase(String capitalLetter) {

String str = "";
String str2 = capitalLetter.replaceAll("\\s+", " ");

int length = str2.length();

char j;
if (length > 1) {
    for (int i = 0; i < length; i++) {
        j = str2.charAt(i);
        if (j == ' ') {
        str = str + j + (Character.toUpperCase(str2.charAt(i + 1)));
        i++; //    for skip
        } else {
        str = str + j;
        }
    }
} else {
    str = "Please enter a string.";
    }
    return str.trim();
    }
}

1 个答案:

答案 0 :(得分:0)

这是因为读取k的值的方式不正确k = str2.charAt(i + 1)它应该更改,如下面的代码所示。

在您的代码中尝试访问超出所提供字符串长度的字符。

这应该是更正后的代码

    char j, k=0; 
    if (length > 1) {
        for (int i = 0; i < length; i++) {
            j = str2.charAt(i);
            if(i!=length-1){
                k = str2.charAt(i + 1);
            }               
            if (j == ' ') {
                str = str + j + (Character.toUpperCase(k));
                i++; //    for skip
            } else {
                str = str + j;
            }
        }
    } else {
        str = "Please enter a string.";
    }