你好这里是一些检查有效字符的代码,尽管代码不起作用。即使'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;
}
}
答案 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;
}