gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:31:06 24 4
gpt4 key购买 nike

如果这是一个愚蠢的问题,我深表歉意,因为我仍在学习 Java(自学)。

我想做的是创建一种贷款计算器,您可以在其中选择您想要的贷款类型;抵押贷款、汽车票据等

我很好奇创建只处理扫描仪的类是否可以接受/有效。对于 int 条目、字符串、 double 等有多种方法。该类将从 main 中调用,并根据请求的信息返回用户输入的任何条目。每个方法中也会有不同的catch语句来处理每个方法可能遇到的不同问题。

当我编写程序时,我得出的结论是,必须有一种更有效的方法来捕获用户输入并捕获任何异常,而不是调用我创建的扫描器,添加 catch/try,然后循环查找我要求的每个单独输入的任何异常,其中包括主菜单选择和相关信息的收集(例如本金余额、利率和贷款期限;所有这些都是对扫描仪的单独调用)。

应该注意的是,与用户进行主菜单选择、输入特定数据等的所有通信都是在完全不同的类/主类中处理的。对此类及其方法的唯一调用是处理用户输入的后端请求并将(正确的)值返回到发出请求的方法。下面我放置了该类以及该类中的方法之一供我的扫描仪使用。例如,汽车贷款计算器类会要求用户提供本金或首付款。在该方法中,我将调用 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
}

我希望这将是一个更优雅的解决方案来收集用户输入和处理异常,但我不确定是否可以接受在标准约定中创建此类,或者是否有更好的解决方案我正在努力做。

最佳答案

Is creating a dedicated class for a scanner a useful input solution?

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

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

  1. 无提示
  2. 没有用户报告;即“这不是一个有效的整数:请重试”。 (好吧……看来您打算这样做。)
  3. 它被破坏了,因为它只是重试而没有跳过错误的输入。这只会导致“再试一次”消息的无限喷涌。
<小时/>

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

关于java - 为扫描仪创建专用类是一个有用的输入解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57541923/

24 4 0
文章推荐: javascript - 为什么 d3.select().style() 不适用于
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com