0

我试过这样

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)
4

5 回答 5

3

第二个几乎可以工作,只是你parseInt不在for大括号内,你还需要使用%( xthe int),而不是a(the String)。

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);
        }
    }
}
于 2013-09-23T22:50:17.040 回答
0

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

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

学习如何阅读堆栈跟踪是 Java 的基础,在这里很容易帮助您: 什么是堆栈跟踪,以及如何使用它来调试我的应用程序错误?

于 2013-09-23T22:58:46.320 回答
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 }

}
于 2013-09-23T22:56:18.793 回答
0

第二个是对的,除了使用 x%2 而不是 a%2

于 2013-09-23T22:49:50.360 回答
0

运算符%仅适用于 Java 中的数字类型。像这样修改您的第二个解决方案:

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

在 if 条件中有x代替。a

于 2013-09-23T22:50:27.387 回答