检查数组是否有某个字符,为什么我的代码不起作用?

时间:2013-03-01 02:47:37

标签: java arrays search contains

你好这里是一些检查有效字符的代码,尽管代码不起作用。即使'operand'是一个有效的字符,它也永远不会打印是,并返回false。无论什么即使角色有效,它也只是不识别它并且总是转到else语句。请帮忙!

public static boolean checkValidOperands(char operand) {

    char[] validOperators = {'+', '-', '*', '/', 'q'};
    List<char[]> validOp = Arrays.asList(validOperators);
    if (validOp.contains(operand))  {
        System.out.println("Yes");
        return false;
    }  else {
        System.out.println("Please enter valid operand");
        return true;
    }
}

3 个答案:

答案 0 :(得分:7)

您可以使用:

List<Character> validOp = Arrays.asList('+', '-', '*', '/', 'q');

答案 1 :(得分:2)

您创建字符列表的方式是错误的。

在您当前的代码中,您创建的列表实际上是一个字符数组列表,而不是字符。

import java.util.Arrays;
import java.util.List;

public class Test{
    public static void main(String[] args){
    char ch = '+';
    System.out.println(checkValidOperands(ch));

    }

    public static boolean checkValidOperands(char operand) {

        Character[] validOperators = {'+', '-', '*', '/', 'q'};
        List<Character> validOp = Arrays.asList(validOperators);
        if (validOp.contains(operand))  {
            System.out.println("Yes");
            return false;
        }  else {
            System.out.println("Please enter valid operand");
            return true;
        }
    }
}

PS:同样对于将来,请不要使用List<char>List<int>等等,因为您不能在Java中使用基本类型用于泛型。请改用相应的对象计数器部件。有关详细信息,请参阅此问题Why can Java Collections not directly store Primitives types?

答案 2 :(得分:0)

字符串是一组字符的更好的数据结构。例如,

String validOperators = "+-*/q";

if (validOperators.indexOf(operand) != -1)  {
    System.out.println("Yes");
    return false;
}