如果這是一個愚蠢的問題,我深表歉意,因為我仍在學(xué)習(xí) Java(自學(xué))。我想做的是創(chuàng)建一種貸款計算器,您可以在其中選擇您想要的貸款類型;按揭、車票等我很好奇創(chuàng)建僅處理掃描儀的類是否可以接受/有效。有多種用于 int 條目、字符串、雙精度數(shù)等的方法。該類將從 main 調(diào)用,并根據(jù)請求的信息返回用戶輸入的任何條目。每個方法中也會有不同的 catch 語句來處理每個方法可能遇到的不同問題。在編寫程序時,我得出結(jié)論,必須有一種更有效的方法來捕獲用戶輸入和捕獲任何異常,而不是調(diào)用我創(chuàng)建的掃描器,添加捕獲/嘗試,然后循環(huán)查找任何異常我要求的每個單獨輸入的例外情況,包括主菜單選擇和相關(guān)信息的收集(例如本金余額、利率和貸款期限;所有這些都是對掃描儀的單獨調(diào)用)。應(yīng)該注意的是,與用戶進行主菜單選擇、輸入特定數(shù)據(jù)等的所有通信都是在完全不同的類/主類中處理的。對此類及其方法的唯一調(diào)用是處理用戶輸入的后端請求并將(正確的)值返回給發(fā)出請求的方法。下面我放了類和類中的一種方法供我的掃描儀使用。例如,汽車貸款計算器類會要求用戶提供本金或首付款。在該方法中,我將調(diào)用 Scan 類并使用 intScan 方法,遍歷不正確的條目(不正確的數(shù)據(jù)類型),并將(正確的類型)值返回給汽車貸款計算器類。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}我希望這將是收集用戶輸入和處理異常的更優(yōu)雅的解決方案,但我不確定是否接受在標(biāo)準(zhǔn)約定中制作此類,或者是否有更好的解決方案來解決我正在嘗試的問題去做。
2 回答

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

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