0

为了简单起见,我删减了我的程序,但是有必要将 next() 的值存储在一个变量中,因为我在迭代器循环中执行了其他一些操作来检查该值是否与某些东西相匹配。但是我在存储该值时遇到了麻烦,我收到一条错误消息,说“不兼容的类型”。

import java.util.*;

public class test
{
    public static void main (String [] args)
    {
        String data="34 23 13 5 2 6 9 11";
        Scanner input=new Scanner(data);
        TreeSet set=new TreeSet();
        while (input.hasNextInt())
        {
            Integer num=new Integer(input.nextInt());
            set.add(num);
        }
        Iterator itr=set.iterator();
        while (itr.hasNext())
        {
            Integer num2=itr.next();
        }
    }
}
4

4 回答 4

4

你应该使用:

TreeSet<Integer> set = new TreeSet<Integer();

一旦你有了它,那么当你添加时,你不需要实例化Integer,你可以这样做:

set.add(input.nextInt());

感谢自动装箱。

然后当你最后迭代时,你可以这样做:

for (Integer num2 : set) {
}
于 2012-04-13T23:35:31.097 回答
3

该行存在编译错误

整数 num2 = itr.next();

因为 Iterator 类的 next 方法返回的 Object 等同于 Integer 类型。Integer 属于 Object 类型,但 Object 不属于 Integer 类型。因此,Object 类型不能转换为 Integer 类型,因为 Object 是 Java 中所有类的超类。在这里,类型不兼容/彼此不匹配。您可以将 Object 类型转换为 String,然后将 String 转换为 Integer,或者您可以简单地将 Object 转换为 Integer。

整数 num2 = Integer.parseInt(itr.next().toString());

整数 num2 = Integer.valueOf(itr.next().toString());

整数 num2 = (整数)itr.next();

于 2016-05-21T09:55:48.297 回答
0

您必须将其转换为Integer类型对象

    Integer num2= (Integer) itr.next();
于 2012-04-13T23:36:43.247 回答
0

一个简单的演员应该可以解决问题

            Integer num2=(Integer) itr.next();
            System.out.println(num2);

问候, 厄瓦尔德

于 2012-04-13T23:37:14.543 回答