Char-array:用java中的大写字母替换字母

时间:2014-09-30 15:32:08

标签: java foreach

所以我想把这个叫做navn的String,并把它变成一个char数组。然后我想通过它并用大写A代替小的“a”。所以它应该打印E S ... l A ...(大A)。

但我无法让它正常工作。任何帮助都会很棒!

private String navn = "Espen Askeladd";

public void metode4() {

    char[] navnBlirCharArray = navn.toCharArray();

    for (char output : navnBlirCharArray) {

        if(navnBlirCharArray.equals('a')) {
            navnBlirCharArray[output] = 'A';
        }
        System.out.println(output);
    }
}

4 个答案:

答案 0 :(得分:1)

你太复杂了!在你的字符串上使用replace()。

    String navn = "Espen Askeladd";
    navn = navn.replace('a', 'A');
    System.out.println(navn);

检查javadoc

答案 1 :(得分:1)

您正在使用快速枚举中的char[]个实例为char编制索引,该实例会被设置为int,并且如果{ArrayIndexOutOfBoundsException,则很可能会抛出int 1}} char的值为> navnBlirCharArray.length(这是因为它不是您想要的索引)。

请参阅此处的示例以了解正在发生的事情:

String[] foo = {"foo", "bar"};
char c = 1; // valid
System.out.println(foo[c]); // valid too

<强>输出

bar

使用String.replace替换char中的StringString,以及String.replaceAll替换为正则表达式。

例如

String replacement = input.replace('a', 'A');

or... 

String replacement = input.replace("a", "A");

最后,如果您需要整个String大写/小写,请使用String.toUpperCaseString.toLowerCase

答案 2 :(得分:1)

for-each构造循环遍历数组的元素值,将每个元素放在命名变量中(在本例中为output)。当你需要修改数组时它是不合适的,因为你需要知道数组中元素的索引,所以你应该使用传统的for循环:

for (int i = 0; i < navnBlirCharArray.length; i++) {
    if (navnBlirCharArray[i] == 'a') {
        navnBlirCharArray[i] = 'A';
    }
}

System.out.println(new String(navnBlirCharArray));

我认为这只是一个学习练习,否则你可以使用内置的字符串replace方法做得更简单:System.out.println(navn.replace('a', 'A'));

答案 3 :(得分:0)

您忘记输出是char而不是int
因此您必须使用int counter = 0;,然后在每次迭代时将其递增为:

private String navn = "Espen Askeladd";

    public void metode4() {
        int counter = 0 ;
        char[] navnBlirCharArray = navn.toCharArray();

        for (char output : navnBlirCharArray) {

            if(output.equals('a')) {     //not navnBlirCharArray
                navnBlirCharArray[counter] = 'A';   //not output(which is character)
            }
            System.out.println(navnBlirCharArray[counter]);  //not output (since you have not changed its value)
       counter++;
        }
    } 

<小时/> 修改: 而且你必须使用print(如果你想要输出单行而不是多行