2014-09-30 89 views
-1

所以我想把这个名为navn的字符串,并把它变成一个字符数组。然后我想通过它,用大写A代替小的“a”。所以它应该打印E S ... l A ...(大A)。char-array:在java中用大写字母替换字母

但我无法让它正常工作。任何帮助将是伟大的!

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); 
    } 
} 
+0

为什么不使用toUpperCase – 2014-09-30 15:33:39

+1

除了你已经得到的其他好的答案,代码'navnBlirCharArray.equals('a')'没有任何意义,'char'会被装入一个'Character'对象,然后你将比较一个'char []'对象来看它是否等于'Character'对象当然,t总会返回'false'。 – 2014-09-30 15:46:30

回答

1

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

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

检查javadoc

1

你与你的快速枚举,它被装箱为int,并很可能会扔内char实例索引你char[]ArrayIndexOutOfBoundsException如果您charint> navnBlirCharArray.length(从事实的一部分,它是不是你想要的索引)。

见例如这里了解发生了什么:

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

输出

bar 

使用String.replaceString内更换char S或String s和String.replaceAll通过更换常用表达。

例如

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

or... 

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

最后,如果你需要整个String上/小写,使用String.toUpperCaseString.toLowerCase

+0

干杯队友!谢谢! – Koen 2014-09-30 19:03:57

+0

@Koen欢迎:) – Mena 2014-09-30 19:25:02

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'));

+0

干杯家伙,你是最棒的。非常感谢你们所有人! – Koen 2014-09-30 16:13:35

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++; 
     } 
    } 


编辑: ,你也必须使用打印(如果你想在单行输出,而不是多个行

+0

Thnx非常有帮助:) – Koen 2014-09-30 19:04:16

+0

@keon你非常欢迎:) – user3921830 2014-10-02 06:25:29

相关问题