[英]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.