2011-12-06 46 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