2011-12-06 42 views
0

我在Java中实现了一个循环列表。代码要求输入值为int,我希望用"END"终止输入列表。该代码工作但会引发运行时异常:NumberFormatException链表实现中的NumberFormatException

try{ 
    while(true){ 
     newnode=new Node(); 
     oldnode.next=newnode; 
     newnode.prev=oldnode;    
     System.out.print("Enter value:"); 
     try{ 
      ctrlstr=bfr.readLine(); 
     } 
     catch(Exception ex){ 
      ex.printStackTrace(); 
     } 
     if (ctrlstr=="END") break; 
     newnode.val=Integer.parseInt(ctrlstr); 
     oldnode=newnode;       
     i++;  
    } 
} 
catch(Exception ex){ 
    ex.printStackTrace(); 
} 
+0

这是什么问题?什么时候抛出NumberFormatException? –

回答

3

这里:

if (ctrlstr=="END") 

你使用==,这始终检查参考身份比较字符串。相反,你应该使用equals

if (ctrlstr.equals("END")) 

或者可能(如果你想只是一个false结果时ctrlstr为null)

if ("END".equals(ctrlstr)) 

一些额外的注意事项:

  • Exception是通常是一个坏主意 - 你应该捕捉更具体的例外
  • Catch荷兰国际集团的异常,然后在打印后继续反正通常是一个坏主意
  • 你的代码,如果你缩进适当
  • 您的代码将更具可读性更具可读性,如果你总是使用大括号if报表等
+0

hey jon .....非常感谢...我的意思是!它已经让我陷入了相当一段时间...... :) – stonecoldjha

0

尝试 ctrlstr.equals("END")改为。

+0

谢谢!我做到了..它的工作! – stonecoldjha