【问题标题】: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,而不是charList
  • 如何修复此代码以使其正常工作?
  • 看到这个问题:stackoverflow.com/questions/1248763/arrays-aslist-of-an-array 编辑:或@Reimeus 回答
  • 您确定 validOp 的声明不应该是 List 而不是 List?您不是在寻找字符 数组 的列表,而只是在寻找字符...
  • 是的,这似乎是问题所在,我尝试了 List 无法识别...

标签: java arrays search contains


【解决方案1】:

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

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&lt;char&gt;List&lt;int&gt; 等,因为在 Java 中不能使用原始类型作为泛型。请改用其对应的对象计数器部件。更多信息请参考这个问题Why can Java Collections not directly store Primitives types?

    【讨论】:

    • 非常感谢,这正是我想要的!
    【解决方案3】:

    你可以使用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 2015-12-03
      • 2020-09-03
      • 2022-06-16
      • 2022-01-10
      相关资源
      最近更新 更多