为了简单起见,我删除了我的程序,但是有必要将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();
}
}
}
答案 0 :(得分:4)
您应该使用:
TreeSet<Integer> set = new TreeSet<Integer();
一旦你有了,那么当你添加时,你不需要实例化Integer
,你可以这样做:
set.add(input.nextInt());
感谢自动装箱。
然后当你最后迭代时,你可以这样做:
for (Integer num2 : set) {
}
答案 1 :(得分:1)
行
中存在编译错误整数num2 = itr.next();
因为Iterator类的下一个方法返回的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();
答案 2 :(得分:0)
您必须将其强制转换为Integer
类型对象
Integer num2= (Integer) itr.next();
答案 3 :(得分:0)
一个简单的演员应该做的伎俩
Integer num2=(Integer) itr.next();
System.out.println(num2);
问候,Erwald