我正在开发一个有 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) 验证输入并在输入无效时显示错误消息。对于这个特定的程序,我建议采用以下任一方法:
如果这是一个 GUI 程序,每个数字都有按钮(就像在物理计算器上一样),您可以在用户选择模式后立即更改可用按钮。例如,当用户选择八进制模式时,仅提供数字 0 到 8 的按钮。这会自动禁止用户键入 9 或任何字母。
如果程序是基于文本的或者您允许用户从键盘输入数字,则您将需要解析输入。一种方法是使用
Integer.parseInt()
。此功能的一个版本允许您指定基础,这将由用户选择的模式确定。当输入字符串包含无效字符时,它将抛出异常。您可以捕获异常并显示相应的错误消息。
关于java - 如何检查用户输入是否是某个基数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43622423/