如何使用JOptionPane捕获错误的输入?

时间:2014-12-08 10:16:48

标签: java

嘿我必须使用JOptionPane向用户询问购买金额,如果他们输入两个以上的小数位,没有任何内容,字符或超过一个小数点,程序必须显示错误消息并停止。

我该怎么做?

我不希望有人为我编写程序只是一个解释我将如何做的链接

如果用户输入“12.526”或“”或“1.3.25”或“abc”,我希望程序显示错误信息并停止。

由于这似乎是一个令人困惑的问题,或者我不正确地问这些是我老师的指示:

  
      
  1. 程序必须要求用户输入购买金额,使用JOptionPane.showInputDialog
  2.   
  3. 程序必须要求用户输入付款金额,使用JOptionPane.showInputDialog
  4.   
  5. 程序必须捕获错误的输入(空,空,字符,多于一个小数点,超过两位小数(即3.567))显示错误消息并停止程序执行。
  6.   
  String PurchaseAmount = JOptionPane.showInputDialog(null, String.format("What is your purchase amount?")); 
  double PurchaseTotal = Double.parseDouble(PurchaseAmount);
  String PaymentAmount = JOptionPane.showInputDialog(null, "What is the payment amount?");
  double PaymentGiven = Double.parseDouble(PaymentAmount);

1 个答案:

答案 0 :(得分:2)

检查输入格式是否正确的第一部分就像您所做的那样:使用Double.parseDouble()String转换为double。执行此操作时,您可以使用try / catch块来捕获NumberFormatException,如果输入根本无法转换为浮点数,则会发生这种情况。< / p>

但是你也被要求检查小数点后面是否有两位数以上。这有点棘手。我建议您使用String.indexOf()在输入字符串中查找小数点,然后在该点之后检查是否有不超过两个字符(我包括数字)。

还有其他选择,但如果您不熟悉它们,它们可能会比较棘手:

  1. 使用正则表达式。
  2. 转换为BigDecimal,然后检查如果您舍入到两位小数,则最终会得到与您开始时相同的BigDecimal
  3. 注意:使用double尝试第二种方法。 double不能总是精确地表示十进制数,因此舍入到两个小数位并且检查它不变可能会给出误报(在没有错误的情况下看似错误)。