如何不使用Scanner类从用户处获取字符或算术运算符输入?
不用Scanner类获取用户输入的Java实现方案
当然可以不用Scanner类来获取用户输入啦!下面我就给你介绍两种常用的替代方法,还会结合你写的算术运算程序来做修改示例~
方法一:使用BufferedReader + InputStreamReader
这是Java IO包中的经典输入方式,灵活性很高,不过需要处理IO异常。下面是修改后的代码:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class ArithmeticOperation { public static void main(String args[]) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try { System.out.print("Enter A : "); int a = Integer.parseInt(br.readLine()); System.out.print("Enter B : "); int b = Integer.parseInt(br.readLine()); System.out.print("Enter operator (+, -, *, /) : "); char operator = br.readLine().charAt(0); double addition = a + b; double subtraction = a - b; double multiplication = a * b; // 优化除法逻辑,避免整数除法丢失小数部分 double division = (double)a / b; switch(operator) { case '+' : System.out.println("Total after Addition is : " + addition); break; case '-' : System.out.println("Total after Subtraction is : " + subtraction); break; case '*' : System.out.println("Total after Multiplication is : " + multiplication); break; case '/' : System.out.println("Total after Division is : " + division); break; default : System.out.println("Please select proper operator"); return; } } catch (IOException e) { System.out.println("输入出现错误:" + e.getMessage()); } catch (NumberFormatException e) { System.out.println("请输入有效的整数数字"); } } }
注意:这种方式需要手动把读取到的字符串转换成对应的数据类型,比如用Integer.parseInt()转整数。另外我还优化了你原代码里的除法问题——原代码中a/b是整数除法,会直接丢弃小数部分,改成(double)a/b就能得到正确的浮点数结果啦。
方法二:使用Console类
Console类是Java 6之后引入的,专门用于控制台交互,代码更简洁,但有个小限制:在部分IDE的内置控制台中可能无法正常工作,因为它依赖系统的标准控制台环境。修改后的代码如下:
import java.io.Console; class ArithmeticOperationConsole { public static void main(String args[]) { Console console = System.console(); if (console == null) { System.out.println("无法获取控制台,请使用系统终端运行程序"); System.exit(1); } int a = Integer.parseInt(console.readLine("Enter A : ")); int b = Integer.parseInt(console.readLine("Enter B : ")); char operator = console.readLine("Enter operator (+, -, *, /) : ").charAt(0); double addition = a + b; double subtraction = a - b; double multiplication = a * b; double division = (double)a / b; switch(operator) { case '+' : System.out.println("Total after Addition is : " + addition); break; case '-' : System.out.println("Total after Subtraction is : " + subtraction); break; case '*' : System.out.println("Total after Multiplication is : " + multiplication); break; case '/' : System.out.println("Total after Division is : " + division); break; default : System.out.println("Please select proper operator"); return; } } }
这个方法不需要手动处理IO异常,还能直接在readLine()里传入提示文本,代码更清爽。如果运行时console对象为null,记得提示用户切换到系统终端打开程序哦。
内容的提问来源于stack exchange,提问作者Abhishek Diwakar
相关产品推荐
相关产品推荐

