如果這是一個愚蠢的問題,我深表歉意,因為我仍在學習 Java(自學)。我想做的是創建一種貸款計算器,您可以在其中選擇您想要的貸款類型;按揭、車票等我很好奇創建僅處理掃描儀的類是否可以接受/有效。有多種用于 int 條目、字符串、雙精度數等的方法。該類將從 main 調用,并根據請求的信息返回用戶輸入的任何條目。每個方法中也會有不同的 catch 語句來處理每個方法可能遇到的不同問題。在編寫程序時,我得出結論,必須有一種更有效的方法來捕獲用戶輸入和捕獲任何異常,而不是調用我創建的掃描器,添加捕獲/嘗試,然后循環查找任何異常我要求的每個單獨輸入的例外情況,包括主菜單選擇和相關信息的收集(例如本金余額、利率和貸款期限;所有這些都是對掃描儀的單獨調用)。應該注意的是,與用戶進行主菜單選擇、輸入特定數據等的所有通信都是在完全不同的類/主類中處理的。對此類及其方法的唯一調用是處理用戶輸入的后端請求并將(正確的)值返回給發出請求的方法。下面我放了類和類中的一種方法供我的掃描儀使用。例如,汽車貸款計算器類會要求用戶提供本金或首付款。在該方法中,我將調用 Scan 類并使用 intScan 方法,遍歷不正確的條目(不正確的數據類型),并將(正確的類型)值返回給汽車貸款計算器類。import java.util.Scanner;class Scan { private static Scanner scanner = new Scanner(System.in); private static boolean flag = false; static int intScan() { // Method for scanning for integers int value = 0; while (!flag) { value = scanner.nextInt(); // catch here for exceptions, with a message // to the user to input the correct syntax if (value > -1) { flag = true; // Break out of loop } } flag = false; // Set the flag back to false for future use return value; // Return whatever the user input is}我希望這將是收集用戶輸入和處理異常的更優雅的解決方案,但我不確定是否接受在標準約定中制作此類,或者是否有更好的解決方案來解決我正在嘗試的問題去做。
2 回答

MMTTMM
TA貢獻1869條經驗 獲得超4個贊
為掃描儀創建一個專用類是有用的輸入解決方案嗎?
它可能很有用……如果你深思熟慮地設計和實現一個包括提示、告訴用戶他們做錯了什么以及重試的抽象。
但是,您當前的嘗試并沒有成功:
沒有提示
沒有用戶報告;即“這不是一個有效的整數:再試一次”。(好的......看起來你打算這樣做。)
它被破壞是因為它只是在不跳過錯誤輸入的情況下重試。這只會導致“再試一次”消息的無限噴涌。
最終,由您來決定您正在做的事情是否有所改善。

米脂
TA貢獻1836條經驗 獲得超3個贊
嗯,我不這么認為。為什么不(如果這在您的場景中可以接受)只讀取行并處理它們?
同樣重要的是:你知道你的掃描器是否能優雅地處理混合字符集編碼嗎?我的意思是 Java 閱讀器類中的字符集編碼問題在整個 Stack Overflow 中都有很好的記錄,但我對這些Scanner
類不太確定。
添加回答
舉報
0/150
提交
取消