Java 检查数组是否具有特定字符,为什么我的代码不起作用?

Java 检查数组是否具有特定字符,为什么我的代码不起作用?,java,arrays,search,contains,Java,Arrays,Search,Contains,Hello这里有一些代码来检查有效字符,尽管代码不起作用。即使“Operator”是有效字符,它也不会打印yes,并返回false。不管怎样,即使字符是有效的,它也不会识别它,并且总是转到else语句。请帮忙 public static boolean checkValidOperands(char operand) { char[] validOperators = {'+', '-', '*', '/', 'q'}; List<char[]> validOp =

Hello这里有一些代码来检查有效字符,尽管代码不起作用。即使“Operator”是有效字符,它也不会打印yes,并返回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;
    }
}
公共静态布尔校验ValidOrands(字符操作数){
char[]有效运算符={'+','-','*','/','q'};
List validOp=Arrays.asList(validOperators);
if(validOp.contains(操作数)){
System.out.println(“是”);
返回false;
}否则{
System.out.println(“请输入有效的操作数”);
返回true;
}
}
您可以使用:

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

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

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

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;
        }
    }
}
导入java.util.array;
导入java.util.List;
公开课考试{
公共静态void main(字符串[]args){
char ch='+';
系统输出打印LN(校验有效性参数(ch));
}
公共静态布尔校验ValidOrands(字符操作数){
字符[]validOperators={'+','-','*','/','q'};
List validOp=Arrays.asList(validOperators);
if(validOp.contains(操作数)){
System.out.println(“是”);
返回false;
}否则{
System.out.println(“请输入有效的操作数”);
返回true;
}
}
}

另外,为了将来,不要使用
列表
列表
等。。因为在Java中不能对泛型使用基元类型。使用相应的对象计数器部件。有关更多信息,请参阅此问题

对于一组字符而言,字符串是更好的数据结构。比如说,

String validOperators = "+-*/q";

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

这是一个
列表
字符[]
,而不是
列表
字符
。如何修复此代码使其正常工作?请参见以下问题:Edit:或@Reimeus answer您确定validOp的声明不应是列表而不是列表吗?你找的不是字符数组列表,而是字符…是的,看起来这就是问题所在,我尝试了列表,但没有被识别…非常感谢,这正是我要找的!