0

Javaで循環リストを実装しました。コードはint値の入力を要求します。入力リストを。で終了したいと思います"END"。コードは機能しますが、ランタイム例外をスローします: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();
}
4

2 に答える 2

3

ここ:

if (ctrlstr=="END")

を使用して文字列を比較しています。==これは常に参照IDをチェックします。代わりに、次を使用する必要がありますequals

if (ctrlstr.equals("END"))

またはおそらく(がnullのfalseときに結果だけが必要な場合)ctrlstr

if ("END".equals(ctrlstr))

いくつかの追加の注意事項:

  • キャッチExceptionすることは通常悪い考えです-あなたはより具体的な例外をキャッチするべきです
  • 例外をキャッチし、印刷後に続行することは通常、悪い考えです
  • 適切にインデントすると、コードが読みやすくなります
  • ステートメントなどに常に中括弧を使用すると、コードが読みやすくなります。if
于 2011-12-06T19:21:51.050 に答える
0

ctrlstr.equals("END")代わりに試してください 。

于 2011-12-06T19:21:56.257 に答える