我将如何解析这个问题

时间:2013-09-23 22:47:21

标签: java

我试过这样的

public Set<String> getEvens() {
    Set<String> evens = new TreeSet<String>();
    for (String a : list) {
        if (a % 2 == 0) {
            int x = Integer.parseInt(a);
            evens.add(x);
        }
    }
}

和这个

public Set<String> getEvens() {
    Set<String> evens = new TreeSet<String>();
    for (String a : list) {
        int x = Integer.parseInt(a);
        if (a % 2 == 0) {
            evens.add(a);
        }
    }
}

但是既不工作,也不确定还有什么可以尝试的。我暂时没有使用parseInt,也可能做错了

这些是我得到的错误:

error: bad operand types for binary operator '%'
error: no suitable method found for add(int)

5 个答案:

答案 0 :(得分:3)

第二个几乎可以正常工作,只是你的parseInt不在for的大括号内,你还需要在%上使用xint),而非aString)。

public Set<String> getEvens()
{
    Set<String> evens = new TreeSet<String>();
    for (String a : list)
    {
        int x =Integer.parseInt(a);
        if (x % 2==0)
        {
            evens.add(a);
        }
    }
}

答案 1 :(得分:0)

第二个是正确的,除了使用x%2而不是%2

答案 2 :(得分:0)

运算符%仅适用于Java中的数值类型。修改你的第二个解决方案:

if (x % 2 == 0) {
    evens.add(a);
}

if条件中有x而不是a

答案 3 :(得分:0)

public Set<String> getEvens(List<String> list) {
    Set<String> evens = new TreeSet<String>();
    // modify for(String a:list){
    for (String a : list) {
        int x = Integer.parseInt(a);
        {
            //modify if (a % 2 == 0) {
            if (x % 2 == 0) {
                evens.add(a);
            }
        }
    }
    // modify add this }

}

答案 4 :(得分:0)

两个示例都有不同的错误,但它们与解析int无关。

Example 1: events.add(x), events takes Strings while x is int.
Example 2. a%2 is wrong, a is String.

学习如何阅读stacktraces是Java的基础,并且很容易在这里帮助你: What is a stack trace, and how can I use it to debug my application errors?