为了账号安全,请及时绑定邮箱和手机立即绑定

为扫描仪创建一个专用类是有用的输入解决方案吗?

为扫描仪创建一个专用类是有用的输入解决方案吗?

杨魅力 2023-06-14 10:34:33
如果这是一个愚蠢的问题,我深表歉意,因为我仍在学习 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个赞

为扫描仪创建一个专用类是有用的输入解决方案吗?

它可能很有用……如果你深思熟虑地设计和实现一个包括提示、告诉用户他们做错了什么以及重试的抽象。

但是,您当前的尝试并没有成功:

  1. 没有提示

  2. 没有用户报告;即“这不是一个有效的整数:再试一次”。(好的......看起来你打算这样做。)

  3. 它被破坏是因为它只是在不跳过错误输入的情况下重试。这只会导致“再试一次”消息的无限喷涌。


最终,由您来决定您正在做的事情是否有所改善。


查看完整回答
反对 回复 2023-06-14
?
米脂

TA贡献1836条经验 获得超3个赞

嗯,我不这么认为。为什么不(如果这在您的场景中可以接受)只读取行并处理它们?

同样重要的是:你知道你的扫描器是否能优雅地处理混合字符集编码吗?我的意思是 Java 阅读器类中的字符集编码问题在整个 Stack Overflow 中都有很好的记录,但我对这些Scanner类不太确定。


查看完整回答
反对 回复 2023-06-14
  • 2 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信