Java学习笔记(三)有文件存储功能的计算器

Java学习笔记(三)有文件存储功能的计算器

任务描述:

使用Java设计能够实现加减乘除的计算器,同时将输出的存入文件

程序代码:

import java.io.*;
import java.util.Scanner;

class InputException extends Exception {//检测用户输入是否为整数
    private String inputexception;
    public InputException(String number) {
        this.inputexception = number;}
    public String getinputexception() {
        return inputexception;}
}
class CounterSystem {
    public static double E = Math.E; 
	public static double PI = Math.PI;
    private double ans;
	private int a;
    private int b;
    private String filer;
    private Scanner scan;

    public void Menu() {//主菜单选择输入
        System.out.println("**********菜单系统**********");
        System.out.println("请输入0~4中任意数字,选择您的操作");
        System.out.println("--【1】加法训练");
        System.out.println("--【2】减法训练");
        System.out.println("--【3】乘法训练");
        System.out.println("--【4】除法训练");
        System.out.println("--【0】退出程序");
        System.out.print("请选择:");
        int modeControler = scan.nextInt();
        switch (modeControler) {
            case 0:
                System.out.println("系统退出,再见");
                break;
            case 1:
                this.Sum();
                break;
            case 2:
                this.Sub();
                break;
            case 3:
                this.Mult();
                break;
            case 4:
                this.Div();
                break;
            default:
                System.out.println("选择模式有误,请重新输入");
                this.Menu();
        }
    }
	public CounterSystem() {//控制台输出
        scan = new Scanner(System.in);
    }
    public CounterSystem(String filer)  {//文件输出
        this();
        this.filer = filer;
    }
    private void InputNumber() {//输入系统并检测输入是否合法
        while (true){
            try {
                a = getInput();
                break;
            }catch (InputException e){
                System.out.println(e.getinputexception());
            }
        }
        System.out.println("请输入第二个数:");
        while (true) {
            try {
                b = getInput();
                break;
            } catch (InputException e) {
                System.out.println(e.getinputexception());
            }
        }
    }
    private int getInput() throws InputException{
        String input = scan.next();
        if(input.matches("^\\d+$")){//利用正则表达式检测
            return Integer.valueOf(input);
        }else{
            throw new InputException("请输入一个整数");
        }
    }
    private void Continuer() {
        System.out.println("结果为:");
        System.out.println("是否继续相同计算?是请输入1,返回主菜单输入2,退出请输任意数字:");
        int nextMode;
        while (true){
            try {
                nextMode = getInput();
                break;
            }catch (InputException e){
                System.out.println(e.getinputexception());
            }
        }
        if(nextMode == 1){
            this.Sum();
        }else if(nextMode == 2){
            this.Menu();
        }else{
            System.out.println("系统退出,再见!");//退出
        }
    }
    public void Sum() {
        System.out.println("加法训练,请输入第一个数:");
        InputNumber();
        ans = a + b;
        System.out.println(a + "+" + b + "=" + ans);
        if (filer != null) {
            try (
                BufferedWriter output = new BufferedWriter(new FileWriter(filer, true));
            ) {
                output.write(a + "+" + b + "=" + ans+"\n");
                output.flush();
            } catch (IOException e) {
                System.out.println("文件打开错误");
            }
        }
        Continuer();
    }
    public void Sub() {
        System.out.println("减法训练,请输入第一个数:");
        InputNumber();
        ans = a - b;
        System.out.println(a + "-" + b +  "=" + ans);
        if (filer != null) {
            try (
                BufferedWriter output = new BufferedWriter(new FileWriter(filer, true));
            ) {
                output.write(a + "-" + b + "=" + ans+"\n");
                output.flush();
            } catch (IOException e) {
                System.out.println("文件打开错误");
            }
        }
        Continuer();
    }
    public void Mult() {
        System.out.println("乘法训练,请输入第一个数:");
        InputNumber();
        ans = a * b;
        System.out.println(a + "*" + b +  "=" + ans);
        if (filer != null) {
            try (
                BufferedWriter output = new BufferedWriter(new FileWriter(filer, true));
            ) {
                output.write(a + "*" + b + "=" + ans+"\n");
                output.flush();
            } catch (IOException e) {
                System.out.println("文件打开错误");
            }
        }
        Continuer();
    }
    public void Div()  {
        System.out.println("除法训练,请输入第一个数:");
        InputNumber();
        ans = (double)a / (double) b;
        System.out.println(a + "/" + b +  "=" + ans);
        if (filer != null) {
            try (
                BufferedWriter output = new BufferedWriter(new FileWriter(filer, true));
            ) {
                output.write(a + "/" + b + "=" + ans+"\n");
                output.flush();
            } catch (IOException e) {
                System.out.println("文件打开错误");
            }
        }
        Continuer();
    }
}

public class Jisuan {
    public static void main(String[] args) {
         CounterSystem counter = new CounterSystem("计算器.txt");
         counter.Menu();
    }
}

运行结果:

加法功能、继续计算和不输入整数测试:

在这里插入图片描述

返回主菜单测试:

在这里插入图片描述

减法、乘法、除法测试:

在这里插入图片描述

退出功能演示:

在这里插入图片描述

功能分析:

自行设计菜单界面,利用BufferedWriter进行文件写入。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值