检查数组是不是具有特定字符,为啥我的代码不起作用?
Posted
技术标签:
【中文标题】检查数组是不是具有特定字符,为啥我的代码不起作用?【英文标题】:Checking if an array has a certain character, why is my code not working?检查数组是否具有特定字符,为什么我的代码不起作用? 【发布时间】:2013-02-15 11:24:50 【问题描述】:您好,这里有一些用于检查有效字符的代码,尽管该代码不起作用。即使 '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;
【问题讨论】:
这是char[]
的List
,而不是char
的List
。
如何修复此代码以使其正常工作?
看到这个问题:***.com/questions/1248763/arrays-aslist-of-an-array 编辑:或@Reimeus 回答
您确定 validOp 的声明不应该是 List对于一组字符来说,字符串是一种更好的数据结构。例如,
String validOperators = "+-*/q";
if (validOperators.indexOf(operand) != -1)
System.out.println("Yes");
return false;
【讨论】:
【参考方案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?
【讨论】:
非常感谢,这正是我想要的!【参考方案3】:你可以使用:
List<Character> validOp = Arrays.asList('+', '-', '*', '/', 'q');
【讨论】:
以上是关于检查数组是不是具有特定字符,为啥我的代码不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
Discord.py:检查用户是不是具有列表中的角色 ID 不起作用
检查数组中是不是存在迭代器时,array.includes 不起作用[重复]
如何检查字符串是不是包含在 ArrayList 中?包含不起作用[重复]