所以这是我的代码。我想要做的是识别字符串数组中的每个唯一字母,并将唯一字母保存在字符数组中。我尝试了以下代码,但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
它只会打印出String的地址。
感谢您的帮助! :)
答案 0 :(得分:0)
数组不会覆盖toString
,因此您只需获得输入数组的Object#toString
表示。你可以做到
return new String(letters);
答案 1 :(得分:0)
letters.toString()给出了一些奇怪的输出。在java中,要么必须覆盖toString方法,以便在使用非pirimitive类型时查看所需内容,或者必须创建自己的方法来打印它们。
您可以使用for循环迭代它们以打印,简单快速的解决方案:)
搜索..
在数组中进行搜索可以有很多不同的实现,但如果数据很小而且没有排序,我会使用这个。当然这种实现可以与其他对象一起使用,其中使用equals方法而不是' =='。顺便说一下,对于通用Lists,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
}
答案 2 :(得分:0)
我建议使用charValue()方法并使用它直接将字符映射到数组。如果你有所有小写英文字符,你可以简单地从小写字符的charValue()中减去字符'a'的charValue(),并得到一个完全映射到数组索引的数字。
如果你这样做,你实际上可以计算任何字符的出现次数(作为一个整数而不是字符数组),或者使用一个bool数组。
答案 3 :(得分:0)
回答我自己的问题......就像@Reimeus&#39;说,一个
charArray.toString()
只返回数组的内存地址,而不是字符串值。你可以使用
new String(char[] array)
获取字符数组的字符串值,或
String.valueOf(char[] array)
也可以运作!