程序无法正常运行[关闭]
Posted
技术标签:
【中文标题】程序无法正常运行[关闭]【英文标题】:Program won't run properly [closed] 【发布时间】:2017-02-08 06:29:55 【问题描述】:所以我编写了这个程序,但由于某种原因,我的 else 语句不起作用。 例如,如果我输入“e”,我的程序将简单地崩溃......当它实际上应该返回“无效输入”时 有人可以帮帮我吗?
================================================ ============================
import java.util.Scanner;
public class AbsValue2
public static void main(String[] args)
Scanner input = new Scanner(System.in);
System.out.println("Enter a number:");
String num = input.nextLine();
Double num2 = new Double(Double.parseDouble(num));
Double abs_val = new Double(Math.sqrt(num2 * num2));
if (num.matches("[+-]?[\\d]+[.]*"))
System.out.println("The absolute value of " + num + " is |" + abs_val + "|");
else if (num.matches("[+-]?[\\d]*.[\\d]+"))
System.out.println("The absolute value of " + num + " is |" + abs_val + "|");
else
System.out.println("Invalid input");
【问题讨论】:
您正在尝试解析它,然后再检查它是否有效。 简单的解决方法是在 try 和 catch 中进行包装,并在您的 catch 输出中输入无效输入! 【参考方案1】:问题出在这里:
Double num2 = new Double(Double.parseDouble(num));
如果 num 是“e”,那么你会得到一个NumberFormatException
。
您可以使用Scanner.hasNextDouble
来检查或尝试/捕获该异常。
【讨论】:
【参考方案2】:你的代码抛出了NumberFormatException
之前 if 语句到达,因为这一行:
Double num2 = new Double(Double.parseDouble(num));
您需要在解析之前检查其有效性。
【讨论】:
以上是关于程序无法正常运行[关闭]的主要内容,如果未能解决你的问题,请参考以下文章