You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:09:27