4

您好,这里有一些用于检查有效字符的代码,尽管该代码不起作用。即使 'operand' 是一个有效字符,它也永远不会打印 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;
    }
}
4

3 回答 3

7

你可以使用:

List<Character> validOp = Arrays.asList('+', '-', '*', '/', 'q');
于 2013-03-01T02:50:50.643 回答
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 中使用原始类型作为泛型。请改用其对应的对象计数器部件。有关更多信息,请参阅此问题为什么 Java 集合不能直接存储 Primitives 类型?

于 2013-03-01T02:52:13.160 回答
0

对于一组字符来说,字符串是一种更好的数据结构。例如,

String validOperators = "+-*/q";

if (validOperators.indexOf(operand) != -1)  {
    System.out.println("Yes");
    return false;
}
于 2015-03-30T17:00:43.993 回答