2015-07-03 106 views
0

所以這是我的代碼。我想要做的是識別字符串數組中的每個唯一字母,並將唯一字母保存在字符數組中。我嘗試了下面的代碼,但Eclipse很奇怪。它只會添加字符串數組中的第一個字母,並且會將相同的字母重複添加到char數組中,這不是我打算做的事情,也不是代碼看起來會實現這樣的事情。有人能告訴我for循環有什麼問題嗎?

public class Minglish { 
public static String answer(String[] words) { 
    char[] letters = new char[25]; 
    int i = 0; 
    //iterate through words to get every unique letters 
    for (String word: words) { 
     for (char letter: word.toCharArray()) { 
      if (!(letters.toString().contains(String.valueOf(letter)))) { 
       letters[i] = letter; 
       i++; 
      } 
     } 
    } 
    return (letters.toString()); 
} 
} 

有人能向我解釋,如果這是我的代碼/邏輯的問題,或者它是從我的編譯器中的錯誤?

此外,當您嘗試打印出來使用

System.out.println 

只會打印出該字符串的地址結果陣列。

謝謝你的幫助! :)

+4

看看'letters.toString()'返回的是什麼。 – Pshemo

+0

謝謝!這正是問題所在。注意我自己 - array.toString()返回數組的地址!:) –

回答

0

數組不覆蓋toString所以你只是得到輸入數組的Object#toString表示。你可以做

return new String(letters); 
+0

謝謝!這修好了:) –

0

letters.toString()給出了一些奇怪的輸出。在java中,要麼你必須重寫toString方法來查看當你使用非pirimitive類型時你想要什麼,或者你必須創建自己的方法來打印它們。

你可以用它們迭代for循環打印,簡單快捷的解決方案:)

的搜索..

可以有許多不同的實現做一個數組的搜索,但我使用這一個如果數據很小,而且沒有排序的話。當然這種實現可以和其他對象一起使用,而使用equals方法而不是'=='。順便說,對於通用的詞典,Java集合類,提供了排序和搜索方法

public int indexOf(char key, char[] arr) { 
    // Like a linear search.. 
    for (int i = 0; i < arr.length; i++) { 
     if (arr[i] == key) 
      return i; 
    } 
    return -1; //defeault return is -1 
} 
+0

嗨,謝謝你的回答。這是非常有用和詳細的。但是萊梅斯先回答了他,他也是對的,所以我必須將他定爲答案。儘管我感謝你的幫助! :) –

+0

嗨:)它不是關於獲得任何點數或成績等等。我的問題已經被一個人解答了,他甚至試圖解決我的問題,甚至3次!你相信嗎 ? :)人們喜歡幫助..大約一小時前,我只是用這個網站問smt,但現在我明白,我應該幫助某人,只要我可以..該委內瑞拉點是這是我的朋友:) –

+0

非常好!榮譽給你:) –

0

我推薦使用的charValue()方法和使用的字符直接映射到陣列上。如果您全部使用小寫英文字符,則可以簡單地從小寫字符的charValue()中減去字符'a'的charValue()並獲取一個數字,該數字將完美映射到數組的索引。

如果你這樣做,你實際上可以保持任何字符出現次數的計數(作爲整數而不是字符),或者使用一個布爾數組。

+0

有趣的做法...我會給它一個鏡頭!謝謝 –

0

回答我的問題...喜歡什麼@Reimeus'說,一個

charArray.toString() 

只會返回,而不是它的字符串值的數組的內存地址。您可以使用

new String(char[] array) 

獲得字符數組的字符串值,或者

String.valueOf(char[] array) 也可以工作!

相關問題