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进行文件写入。