我有这两种方法 - 我的代码似乎没有按计划运行
应该做的是 - 浏览字符数组 - 如果数组中没有其他字符相同,则应将其自身添加到索引变量中 -
这是我的比较方法
private boolean isValid(char c) {
for(int i = 0; i < letters.length; i++) {
if(Arrays.asList(letters).equals(c)) {
return false; //Not valid
}
}
return true;
完整代码如下
public void generate(String first, String second) {
tempString = new StringBuilder(first+second).reverse();
letters = new char[tempString.length()];
for(int i = 0; i < tempString.length(); i++) {
letters[i]= tempString.charAt(i);
if(isValid(tempString.charAt(i))) {
index += i;
}
}
}
private boolean isValid(char c) {
for(int i = 0; i < letters.length; i++) {
if(Arrays.asList(letters).equals(c)) {
return false; //Not valid
}
}
return true;
}
答案 0 :(得分:3)
无需转换为List
(并且List
不是原始char
),您可以使用==
来比较原始值(例如你的char
s。像,
private boolean isValid(char c) {
for (int i = 0; i < letters.length; i++) {
if (letters[i] == c) {
return false;
}
}
return true;
}
或增强型for-each
loop
private boolean isValid(char c) {
for (char letter : letters) { // <-- for each letter in letters.
if (letter == c) { // <-- if the letter is equal to the argument.
return false;
}
}
return true;
}
在添加到
之类的数组之前,您还应该测试有效性if (isValid(tempString.charAt(i))) {
letters[index] = tempString.charAt(i);
index++;
}
答案 1 :(得分:1)
Arrays.asList(letters).equals(c)
正在将列表与字符进行比较(列表是否等于此字符,而不是您想要的字符。
要查找字符串是否在字符串中,您可以改为
string.indexOf('a')
如果字符不存在则返回-1,如果字符串中则返回&gt; = <。