查看字符是否在字符数组中的方法

时间:2016-03-25 17:30:36

标签: java arrays

我有这两种方法 - 我的代码似乎没有按计划运行

应该做的是 - 浏览字符数组 - 如果数组中没有其他字符相同,则应将其自身添加到索引变量中 -

这是我的比较方法

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;


}

2 个答案:

答案 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; = <。