为什么链接列表 class 在 macOS x 上的 myeclipse 2013 pro 中没有正确显示添加方法
Why the Linked List class is not showing add method correctly in myeclipse 2013 pro on macos x
我正在使用链表 class 添加 elements.To 一个一个地获取元素 我使用 Iterator 只获取偶数。
问题
1 l.add(p) 在我尝试从 1 到 10 取数字时代码中显示错误
当我输入 l.add("p"); //没有错误为什么?
2 在尝试获取整数对象时我无法应用模数运算符,但为什么呢?
这是代码
打包应用程序;
导入 java.util.*;
public class IteratorDeo1
{
public static void main(String 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...
}
我正在使用链表 class 添加 elements.To 一个一个地获取元素 我使用 Iterator 只获取偶数。
问题
1 l.add(p) 在我尝试从 1 到 10 取数字时代码中显示错误
当我输入 l.add("p"); //没有错误为什么?
2 在尝试获取整数对象时我无法应用模数运算符,但为什么呢?
这是代码 打包应用程序; 导入 java.util.*; public class IteratorDeo1 { public static void main(String 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...
}