Java 将元素添加到ArrayList时引发异常
我有一个数组列表,我试图向其中添加值,但遇到异常。 我已经多次使用此代码,但仍然无法找出是什么导致了此错误,下面是供您参考的代码 我使用add方法的那一行出现了空指针异常, 以上所有值都将在控制台中打印)Java 将元素添加到ArrayList时引发异常,java,arraylist,enumeration,Java,Arraylist,Enumeration,我有一个数组列表,我试图向其中添加值,但遇到异常。 我已经多次使用此代码,但仍然无法找出是什么导致了此错误,下面是供您参考的代码 我使用add方法的那一行出现了空指针异常, 以上所有值都将在控制台中打印) sid=newarraylist(); 枚举e=Global.qtutlist.keys(); int qj=0; //遍历哈希表键枚举 而(e.hasMoreElements()) { System.out.println(“sid是键及其值id”); System.out.println(
sid=newarraylist();
枚举e=Global.qtutlist.keys();
int qj=0;
//遍历哈希表键枚举
而(e.hasMoreElements())
{
System.out.println(“sid是键及其值id”);
System.out.println(Integer.parseInt(例如nextElement().toString());
尝试
{
sid.add(例如nextElement().toString());
System.out.println(“长度为”+sid.size());
}
捕获(例外情况除外)
{
System.out.println(“捕获的异常为”+ex.getMessage());
}
}
您正在循环中调用nextElement()
两次,并检查一次
做如下
while(e.hasMoreElements())
{ String item = e.nextElement().toString()
System.out.println("sid is key and its value id" );
System.out.println(Integer.parseInt(item));
try{
sid.add(item);
System.out.println("lenght is "+ sid.size());
}catch(Exception ex){
System.out.println("caught exception is"+ex.getMessage());
}
}
如果它显示
NumberFormatException
,则其中一个字符串不可解析为int
您正在循环中调用nextElement()
两次并检查一次
做如下
while(e.hasMoreElements())
{ String item = e.nextElement().toString()
System.out.println("sid is key and its value id" );
System.out.println(Integer.parseInt(item));
try{
sid.add(item);
System.out.println("lenght is "+ sid.size());
}catch(Exception ex){
System.out.println("caught exception is"+ex.getMessage());
}
}
如果它显示
NumberFormatException
,则其中一个字符串不可解析为inte。nextElement()为null就是原因,您正在对null执行toString()操作
将结果存储在局部变量中,并重复使用:
System.out.println("sid is key and its value id" );
String str = e.nextElement().toString();
System.out.println(Integer.parseInt(str));
try{
sid.add(str);
System.out.println("lenght is "+ sid.size());
}catch(Exception ex){
System.out.println("caught exception is"+ex.getMessage());
}
您正在使用e.nextElement()两次。这不行。枚举使用迭代器设计模式,这意味着在内部计数器前进到下一个对象之前,只能访问每个元素一次。请注意,hasMoreElements()不推进光标,只有nextElement()推进光标
将结果存储在局部变量中,并重复使用:
System.out.println("sid is key and its value id" );
String str = e.nextElement().toString();
System.out.println(Integer.parseInt(str));
try{
sid.add(str);
System.out.println("lenght is "+ sid.size());
}catch(Exception ex){
System.out.println("caught exception is"+ex.getMessage());
}
你在打电话吗
e.nextElement()
两次。将其存储在变量中,然后对该变量进行操作
while(e.hasMoreElements()) {
Object o = e.nextElement();
// ...
}
你在打电话吗
e.nextElement()
两次。将其存储在变量中,然后对该变量进行操作
while(e.hasMoreElements()) {
Object o = e.nextElement();
// ...
}
当只检查一次项目存在时,调用nextElement两次。当只检查一次项目存在时,调用nextElement两次。在循环中检查e.hasMoreElements()
一次,调用e.nextElement()
两次。每次调用nextElement()
都会增加内部标记,因此每次枚举中的元素数为奇数时,都会得到一个NPE。您在循环中检查e.hasMoreElements()
一次,调用e.nextElement()
两次。每次调用nextElement()
都会增加内部标记,因此每次枚举中的元素数都是奇数,你得到一个NPE。你需要告诉我们哪一行发生了什么异常。@高于Max的所有人都说它是NullPointerException你需要告诉我们哪一行发生了什么异常。@高于Max的所有人都说它是NullPointerException加法,是不是枚举
泛型?参数化它,这样就不必将每个值存储在基本的对象引用中。@Tom:True。我认为这不是问题所在,但是ArrayList
被正确地参数化了,而Enumeration
似乎并不矛盾。另外,Enumeration
不是通用的吗?参数化它,这样就不必将每个值存储在基本的对象引用中。@Tom:True。我认为这不是问题所在,但是ArrayList
被正确参数化,而Enumeration
似乎并不矛盾。