java - 如何检查用户输入是否是某个基数?

标签 java java.util.scanner user-input

我正在开发一个有 4 种模式的计算器程序。
二进制(基数 2)、八进制(基数 8)、十进制(基数 10)和十六进制(基数 16)。

我想知道如何检查输入的用户输入是否与当前模式匹配。例如,如果计算器设置为八进制模式,我如何检查用户输入的内容是否以 8 为基数?或者如果是十六进制模式如何检查它是否是 16 进制?

程序以十进制模式启动并显示此菜单。

private static String displayMenu(String mode) {
    @SuppressWarnings("resource")
    Scanner input = new Scanner(System.in);
    System.out.println(mode + " mode\n");
    System.out.println("Bin - Binary               +");
    System.out.println("Oct - Octal                -");
    System.out.println("Dcm - Decimal              *");
    System.out.println("Hex - Hexadecimal          /");
    System.out.println("Q   - Quit                 =");
    System.out.print("Option or value: ");
    String option = input.nextLine();
    option.toUpperCase();
    return option;
}

用户可以更改模式或输入当前模式的值。

最佳答案

一般来说,有两种方法来处理用户输入:1) 限制用户可以提供的输入内容或 2) 验证输入并在输入无效时显示错误消息。对于这个特定的程序,我建议采用以下任一方法:

  1. 如果这是一个 GUI 程序,每个数字都有按钮(就像在物理计算器上一样),您可以在用户选择模式后立即更改可用按钮。例如,当用户选择八进制模式时,仅提供数字 0 到 8 的按钮。这会自动禁止用户键入 9 或任何字母。

  2. 如果程序是基于文本的或者您允许用户从键盘输入数字,则您将需要解析输入。一种方法是使用 Integer.parseInt()。此功能的一个版本允许您指定基础,这将由用户选择的模式确定。当输入字符串包含无效字符时,它将抛出异常。您可以捕获异常并显示相应的错误消息。

关于java - 如何检查用户输入是否是某个基数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43622423/

相关文章:

java - Java 中的良好方法实践

java - 使用扫描仪创建对象标识符?

java - java中跳过输入行

c++ - 如何读取二进制数作为输入?

c - 将用户的int变量存储到C中的数组中

java - 为什么在 Java 中从实例方法写入静态字段不好?

java - 高峰请求到来时,Java GC频繁且时间长,导致应用停止响应10分钟

java - 为什么将字符声明为 ''(空)会抛出异常?

java - 如果用户输入不满足条件,则返回消息

html - 如何将用户的输入从 .html 文件获取到 .c 文件?