【问题标题】:how to stop the program when the user inputs the wrong type of data?当用户输入错误类型的数据时如何停止程序?
【发布时间】:2014-12-08 07:17:50
【问题描述】:

嘿,我必须使用 JOptionPane 向用户询问购买金额,如果他们输入多于两位小数、没有输入、字符或多于一位小数,程序必须显示错误消息并停止。

我该怎么做?

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

  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);

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

因为这似乎是一个令人困惑的问题,或者我问错了,所以这些是我老师的指导:

  1. 程序必须要求用户输入购买金额,使用 JOptionPane.showInputDialog
  2. 程序必须要求用户输入支付金额,使用 JOptionPane.showInputDialog
  3. 程序必须捕获不正确的输入(空、空、字符、多个 小数点,多于两位小数(即 3.567))显示错误信息 并停止程序执行。

【问题讨论】:

  • ...到目前为止,您的代码在哪里?
  • 如果图形程序在输入错误后停止,它可能无法正常工作。顺便说一句:if (yourCondition) System.exit(1);
  • @GáborBakos 请不要 System.exit()!
  • 您需要提供与您类似的代码或示例代码,以便提出可能的解决方案...
  • ??那是我的代码。我问用户他们购买了多少以及他们支付了多少。我要做的是,如果他们输入标准美元格式 XX.XX 以外的任何内容,就会出现错误。我不知道我将如何做第二部分,因此无法提供任何代码。

标签: java joptionpane


【解决方案1】:

您需要编写一个方法来验证输入。这可以分步完成:

首先在“.”上拆分输入

  • 如果结果数组的长度>2,则返回false
  • 如果数组中第二个字符串的长度>2,则返回false
  • 如果第一个字符串没有解析为双精度,则返回 false
  • 等等,等等,通过所有的条件来实现这一点
  • 如果它通过了所有测试,则返回 true

(或者,您可以使用正则表达式而不是一系列测试。这可能是一个更好的解决方案,但我认为如果您使用一个,您将不得不维护它,所以您必须从学习写它开始。)

当您返回验证时,如果条目通过,则对其进行解析并继续下一步。 如果为 false,则以某种理智的方式退出(最好不要通过 System.exit() - 您希望能够以优雅的方式终止)

【讨论】:

    猜你喜欢
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 2021-01-18
    • 2021-07-27
    相关资源
    最近更新 更多