[英]Can someone tell me what's wrong with the for loops?
所以這是我的代碼。 我想要做的是在字符串數組中標識每個唯一字母,然后將唯一字母保存在字符數組中。 我嘗試了以下代碼,但是Eclipse行為異常。 它只會在字符串數組中添加第一個字母,並將重復的相同字母添加到char數組中,這不是我想要做的,代碼看起來也不會實現這樣的目的。
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
它只會打印出字符串的地址。
謝謝您的幫助! :)
數組不會覆蓋toString
因此您只獲取輸入數組的Object#toString
表示形式。 你可以做
return new String(letters);
letter.toString()提供了一些奇怪的輸出。 在Java中,要么必須重寫toString方法以查看使用非原始類型時想要什么,要么必須創建自己的方法來打印它們。
您可以使用for循環來循環打印,簡單而快速的解決方案:)
用於搜索..
可以有許多不同的實現方式來在數組中進行搜索,但是如果數據很小且沒有順序,我可以使用這種方式。當然,這種實現方式可以與其他對象一起使用,其行為是使用equals方法代替'=='。 順便說一下,對於通用列表,java Collections類提供了排序和搜索方法
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
}
我建議使用charValue()方法,並使用該方法將字符直接映射到數組。 如果您具有所有小寫英文字符,則可以簡單地從小寫字符的charValue()中減去字符'a'的charValue()並獲得一個可以完美映射到數組索引的數字。
如果執行此操作,則實際上可以保留任何字符的出現次數(作為一個整數數組而不是字符),或使用布爾數組。
回答我自己的問題...就像@Reimeus'所說的那樣,
charArray.toString()
將僅返回數組的內存地址,而不是其字符串值。 您可以使用
new String(char[] array)
獲取字符數組的字符串值,或者
String.valueOf(char[] array)
也可以工作!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.