Java .contains不能与charAt一起使用

时间:2018-01-08 14:53:19

标签: java string parentheses

java:不兼容的类型:char无法转换为java.lang.CharSequence

boolean checkParentheses(String str) {
    Deque<Character> stack = new ArrayDeque<>();  

    String k = "({[";
    String s = ")]}";
    for (int i = 0; i < str.length();i++ ) {
        if (k.contains(str.charAt(i))) {
            stack.push(str.charAt(i));
        } else if (s.contains(str.charAt(i))) {

            if (matching(stack.peek()) == str.charAt(i)) {
                return true;
            }
        } else {
            return false;
        }
    }
} 

我应该使用什么而不是包含?

3 个答案:

答案 0 :(得分:2)

带有-1的

indexOf

这些方面的东西:

boolean checkParentheses(String str) {
    Deque<Character> stack = new ArrayDeque<>();

    String k = "({[";
    String s = ")]}";
    for (int i = 0; i < str.length();i++ ) {
        if (k.indexOf(str.charAt(i)) > -1) {
            stack.push(str.charAt(i));
        } else if (s.indexOf(str.charAt(i)) > -1) {

            if (matching(stack.peek()) == str.charAt(i)) {
                return true;
            }
        } else {
            return false;
        }
    }
    return false;
}

您还可以使用contains创建新String。但是这个选择不是那么好(更无效)。

第二个选项:

boolean checkParentheses(String str) {
    Deque<Character> stack = new ArrayDeque<>();

    String k = "({[";
    String s = ")]}";
    for (int i = 0; i < str.length(); i++) {
        if (k.contains(String.valueOf(str.charAt(i)))) {
            stack.push(str.charAt(i));
        } else if (s.contains(String.valueOf(str.charAt(i)))) {

            if (matching(stack.peek()) == str.charAt(i)) {
                return true;
            }
        } else{
            return false;
        }
    }
    return false;
}

第二种选择相当丑陋。

答案 1 :(得分:0)

尝试使用indexOf而不是contains。包含需要一个String(AKA CharSequence),但你有一个char。您也可以参考:https://javamanikandan.blogspot.in/2018/01/java-string-indexof-method-example.htmlhttps://javamanikandan.blogspot.in/2018/01/java-string-contains-method-explained.html

答案 2 :(得分:0)

试试这个

k.contains(""+str.charAt(i))

该方法包含使用String对象而非Char

的工作