繁体   English   中英

如何使用JOptionPane捕获不正确的输入?

[英]How to catch incorrect input using JOptionPane?

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

我该怎么做?

我不希望有人为我编写程序,只是一个链接,该链接说明了我的操作方式

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

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

  1. 该程序必须要求用户使用JOptionPane.showInputDialog输入购买金额。
  2. 该程序必须要求用户使用JOptionPane.showInputDialog输入付款金额。
  3. 程序必须捕获不正确的输入(空,空,字符,多于一个小数点,多于两个小数位(即3.567)),以显示错误消息并停止程序执行。
  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);

检查输入是否格式正确的第一部分就是您已经完成的工作:使用Double.parseDouble()String转换为double 执行此操作时,可以使用try / catch块来捕获NumberFormatException ,如果根本无法将输入转换为浮点数,则会发生该异常。

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

还有其他选项,但是如果您不熟悉它们,它们可能会更棘手:

  1. 使用正则表达式。
  2. 转换为BigDecimal ,然后检查是否四舍五入到小数点后两位是否与开始时使用的BigDecimal相同。

注意: 不要试图用第二种方法double double精度不能总是精确地表示十进制数字,因此舍入到小数点后两位并检查其是否不变可能会给您带来误报(在没有错误的地方出现错误)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM