gpt4 book ai didi

java - 为什么链接列表类在 macos x 上的 myeclipse 2013 pro 中没有正确显示添加方法

转载 作者:行者123 更新时间:2023-11-30 03:35:18 25 4
gpt4 key购买 nike

我正在使用链表类来添加元素。为了一一获取元素,我使用了迭代器来仅获取偶数。

问题

1 当我尝试获取 1 到 10 之间的数字时,代码中的 l.add(p) 显示错误

当我输入 l.add("p"); 时//没有错误为什么?

2 在尝试获取整数对象时,我无法应用取模运算符,但为什么?

这是代码打包应用程序;导入 java.util.*;公共(public)类 IteratorDeo1{ 公共(public)静态无效主(字符串s []){

    LinkedList l=new LinkedList();
for(int p=0;p<=10;p++)
{
l.add("p");
//l.add(p); here 1st error comes why
}
System.out.println(l);
Iterator i=l.iterator();
while(i.hasNext())
{
Integer I=(Integer)i.next();
if( I % 2 == 0 ) here comes 2nd error
System.out.println(I);
else
i.remove();
}
System.out.println(l);
}

最佳答案

您存储了 "p" 11 次,这是一个文字 String,而不是 Integer。添加 "p" 后,您将添加 "2",它是另一个文字 String,而不是 Integer .

为了确保添加Integer或特定类型的对象,您应该使用泛型:

LinkedList<Integer> l=new LinkedList<Integer>();
for(int p=0;p<=10;p++)
l.add("p"); // compiler error here: you're adding a String, not an Integer

如果您使用的是 Java 1.4 或更早版本(这在现在很奇怪),那么您不能使用泛型,但您仍然可以保护自己免受此 ClassCastException 通过使用 instanceof 运算符:

Iterator i=l.iterator();
while(i.hasNext()) {
Object current = i.next();
if (current instanceof Integer) {
Integer I = current;
//rest of your code...
}
}

此外,从版本 5 开始,Java 中就出现了拆箱和自动装箱功能。在 Java 1.4 或更早版本中,您必须获取包装器的 int 值并手动执行模运算符:

if (I.intValue() % 2 == 0) {
//rest of code...
}

关于java - 为什么链接列表类在 macos x 上的 myeclipse 2013 pro 中没有正确显示添加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28112518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com