Java文件流学习 简单文件计算器实现

题目:输入第一组数放到一个文件里,输入第二组数放到一个文件里,读取文件里的数进行运算,放到第三个文件里读取出来
运行结果

在这里插入图片描述
在这里插入图片描述

package 第一次作业;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		
		int key=0;
		while(key!=4) {
			System.out.println("请输入操作");
			System.out.println("1:输入第一组数");
			System.out.println("2:输入第二组数");
			System.out.println("3:运算");
			System.out.println("4:退出");
			key=input.nextInt();
			switch (key) {
			case 1:oneInput();
				break;
			case 2:twoInput();
				break;
			case 3: yun();
				break;
			default:
				System.out.println("程序退出");
				break;
			}
			
		}
		
	}
	//输入运算符
	static void yun() {
		System.out.println("请输入运算方法");
		System.out.println("1:加");
		System.out.println("2:减");
		System.out.println("3:乘");
		System.out.println("4:除");
		System.out.println("5:退");
		Scanner input=new Scanner(System.in);
		int key=input.nextInt();
		switch (key) {
		case 1:
			threeInput("+");
			break;

		case 2:
			threeInput("-");	
			break;
		case 3:
			threeInput("*");
			break;
		case 4:
			threeInput("/");
			break;
		case 5:
			break;
		default:
			break;
		}
	}
	//第一组输入
	static void oneInput() {
		System.out.println("第一组数字输入");
		try {
		
			FileWriter foFileOutputStream=new FileWriter("E:\\WB\\1.txt");
			BufferedWriter bout=new BufferedWriter(foFileOutputStream);
			Scanner input=new Scanner(System.in);
			String string=input.next();
			while(!string.equals("end")) {
				if(!isNumber(string)) {
					System.out.println("请输入数字");
				}else {
					bout.write(string);
					bout.newLine();
				}
				
				string=input.next();
			}
			bout.close();
			foFileOutputStream.close();
			System.out.println("第一组数字输入结束");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	//第二组输入
	static void twoInput() {
		try {
			System.out.println("第二组数字输入");
			FileWriter foFileOutputStream=new FileWriter("E:\\WB\\2.txt");
			BufferedWriter bout=new BufferedWriter(foFileOutputStream);
			Scanner input=new Scanner(System.in);
			String string=input.next();
			while(!string.equals("end")) {
				if(!isNumber(string)) {
					System.out.println("请输入数字");
				}else {
					bout.write(string);
					bout.newLine();
				}
				string=input.next();
			}
			bout.close();
			foFileOutputStream.close();
			System.out.println("第二组数字输入结束");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	//运算结果输入
	static void threeInput(String yun) {
		try {
			FileReader fileReader1=new FileReader("E:\\WB\\1.txt");
			BufferedReader br1=new BufferedReader(fileReader1);
			
			FileReader fileReader2=new FileReader("E:\\WB\\2.txt");
			BufferedReader br2=new BufferedReader(fileReader2);
			
			FileWriter fileWriter=new FileWriter("E:\\WB\\3.txt");
			BufferedWriter Bo3=new BufferedWriter(fileWriter);
			
			String string1,string2;
			boolean flag=true;
					while(flag) {
						string1=br1.readLine();
						string2=br2.readLine();
						if(string1==null&&string2==null)
							break;
						int n1 = 0;
						int n2 = 0;
						if(string1!=null)
							n1=Integer.parseInt(string1);
						if(string2!=null)
							n2=Integer.parseInt(string2);
						int n3 = 0;
						if(yun.equals("+")) {
							n3=n1+n2;
						}else if(yun.equals("-")) {
							n3=n1-n2;
						}else if(yun.equals("*")) {
							n3=n1*n2;
						}else if(yun.equals("/")) {
							n3=n1/n2;
						}
						Bo3.write(String.valueOf(n3));
						Bo3.newLine();
				}
				Bo3.close();
				fileWriter.close();
				System.out.println("答案是:");
				threeOut();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	//读取运算结果
	static void threeOut() {
		try {
			FileReader threeRea=new FileReader("E:\\WB\\3.txt");
			BufferedReader threeR=new BufferedReader(threeRea);
			String string;
			while((string=threeR.readLine())!=null) {
				System.out.println(string);
			}
			System.out.println("\n");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	//正则表达式
	public static boolean isNumber(String str) {
		Pattern pattern=Pattern.compile("^[0-9]*$");
		Matcher matcher=pattern.matcher(str.trim());
		return matcher.matches();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值