猿问

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

如果这是一个愚蠢的问题,我深表歉意,因为我仍在学习 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

}

我希望这将是收集用户输入和处理异常的更优雅的解决方案,但我不确定是否接受在标准约定中制作此类,或者是否有更好的解决方案来解决我正在尝试的问题去做。


杨魅力
浏览 94回答 2
2回答

MMTTMM

为扫描仪创建一个专用类是有用的输入解决方案吗?它可能很有用……如果你深思熟虑地设计和实现一个包括提示、告诉用户他们做错了什么以及重试的抽象。但是,您当前的尝试并没有成功:没有提示没有用户报告;即“这不是一个有效的整数:再试一次”。(好的......看起来你打算这样做。)它被破坏是因为它只是在不跳过错误输入的情况下重试。这只会导致“再试一次”消息的无限喷涌。最终,由您来决定您正在做的事情是否有所改善。

米脂

嗯,我不这么认为。为什么不(如果这在您的场景中可以接受)只读取行并处理它们?同样重要的是:你知道你的扫描器是否能优雅地处理混合字符集编码吗?我的意思是 Java 阅读器类中的字符集编码问题在整个 Stack Overflow 中都有很好的记录,但我对这些Scanner类不太确定。
随时随地看视频慕课网APP

相关分类

Java
我要回答