我用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
语句等使用大括号,则代码将更具可读性