我用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();
}

最佳答案

这里:

if (ctrlstr=="END")


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

if (ctrlstr.equals("END"))


或(如果您只想在false为null时得到ctrlstr结果)

if ("END".equals(ctrlstr))


一些额外的注意事项:


捕获Exception通常是一个坏主意-您应该捕获更多特定的异常
捕获异常,然后在打印后仍然继续执行,通常是个坏主意
如果适当缩进,您的代码将更具可读性
如果您始终对if语句等使用大括号,则代码将更具可读性

10-01 02:01