Java如何在单行内接收两个整数与运算字符的多类型输入
单行混合数据类型输入的简易计算器实现
核心实现逻辑
Java中Scanner类默认将**连续空白字符(空格、制表符、换行)**作为输入拆分的分隔符,不管你把三个输入项分三行敲,还是在同一行用空格隔开敲,它的读取逻辑完全通用,不需要额外写复杂的字符串拆分代码,只需要把原来分三次的输入引导提示改成一次统一引导,原有读取逻辑几乎可以原样沿用。
具体调整步骤
- 删除原有代码中分三次弹出的“请输入第一个数、请输入运算符、请输入第二个数”的零散提示,替换为一行统一的输入引导,告知用户按
整数 运算符 整数的格式在同一行输入,举个直观的输入示例:6 * 9 - 保留原有
nextInt()读取整数、next().charAt(0)读取运算符的核心读取逻辑,不需要额外修改适配单行输入场景 - 修正原有代码的语法问题:原代码开头的
Public static不符合Java语法规范,改为小写public static,补全类定义的完整结构 - 适配无空格输入的可选方案:如果想要兼容用户直接输入
12+3、不打空格的场景,可以把原来的逐段读取改成先通过sc.nextLine()读取整行字符串,再用正则表达式拆分出数字、运算符、第二个数字三个片段赋值给对应变量,但这种实现对编程初学者来说复杂度稍高,优先推荐空格分隔的单行输入方案,逻辑最简洁、不容易出bug
调整后可直接运行的完整代码
import java.util.Scanner; public class SimpleCalculator { public static void main(String[] args) { int opr1, opr2, answer; char opr; Scanner sc = new Scanner(System.in); // 统一单行输入引导 System.out.println("请按「整数 运算符 整数」的格式在同一行输入计算内容,示例:12 + 5"); opr1 = sc.nextInt(); opr = sc.next().charAt(0); opr2 = sc.nextInt(); switch (opr) { case '+' : answer = opr1 + opr2; System.out.println("计算结果为: " + answer); break; case '-' : answer = opr1 - opr2; System.out.println("计算结果为: " + answer); break; case '*' : answer = opr1 * opr2; System.out.println("计算结果为: " + answer); break; case '/' : if(opr2 > 0) { answer = opr1 / opr2; System.out.println("计算结果为: " + answer); } else { System.out.println("错误:除数不能为0"); } break; default: System.out.println("错误:不支持的运算指令"); break; } } }
使用注意事项
- 输入的运算符仅支持
+、-、*、/四个基础算术符号,其他字符会触发default分支的报错提示 - 按照引导输入时,三个内容块之间要留至少一个空格,否则Scanner会将整段输入识别为单个字符串,无法匹配整数类型触发格式异常
内容的提问来源于stack exchange,提问作者Rashad Aliyev
相关产品推荐
相关产品推荐

