2014-09-30 143 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

相關問題