[英]How to catch incorrect input using JOptionPane?
嘿,我必須使用JOptionPane向用戶詢問購買金額,並且如果他們輸入了兩個以上的小數位,什么都沒有,字符或一個以上的小數點,則程序必須顯示錯誤消息並停止。
我該怎么做?
我不希望有人為我編寫程序,只是一個鏈接,該鏈接說明了我的操作方式
如果用戶輸入“ 12.526”或“”或“ 1.3.25”或“ abc”,我希望程序顯示錯誤消息並停止。
由於這似乎是一個令人困惑的問題,或者我問的不正確,所以這些正是我的老師的指導:
- 該程序必須要求用戶使用JOptionPane.showInputDialog輸入購買金額。
- 該程序必須要求用戶使用JOptionPane.showInputDialog輸入付款金額。
- 程序必須捕獲不正確的輸入(空,空,字符,多於一個小數點,多於兩個小數位(即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()
查找輸入字符串中的小數點,然后檢查在該點之后最多兩個字符(包括數字)。
還有其他選項,但是如果您不熟悉它們,它們可能會更棘手:
BigDecimal
,然后檢查是否四舍五入到小數點后兩位是否與開始時使用的BigDecimal
相同。 注意: 不要試圖用第二種方法double
。 double
精度不能總是精確地表示十進制數字,因此舍入到小數點后兩位並檢查其是否不變可能會給您帶來誤報(在沒有錯誤的地方出現錯誤)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.