簡體   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