我试过这样的
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)
答案 0 :(得分:3)
第二个几乎可以正常工作,只是你的parseInt
不在for
的大括号内,你还需要在%
上使用x
( int
),而非a
(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);
}
}
}
答案 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?