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")

您正在使用 比较字符串==,它始终检查参考身份。相反,您应该使用equals

if (ctrlstr.equals("END"))

或者也许(如果你只想要一个false结果ctrlstr为空)

if ("END".equals(ctrlstr))

一些额外的注意事项:

  • 捕捉Exception通常是个坏主意——你应该捕捉更具体的异常
  • 捕获异常然后在打印后继续执行通常是个坏主意
  • 如果您适当缩进,您的代码将更具可读性
  • 如果您总是if对语句等使用大括号,您的代码将更具可读性
于 2011-12-06T19:21:51.050 回答
0

试试 ctrlstr.equals("END")吧。

于 2011-12-06T19:21:56.257 回答