JAVA基本输入输出流的几种用法(2)——以简单商品管理系统为例

JAVA基本输入输出流的几种用法(2)——以简单商品管理系统为例

PrintWriter与DataInputStream的使用

package Commodity_System;

import java.io.*;
import java.lang.String;
import java.util.ArrayList;


/*
 * 先用PrintWriter类往文件写入商品信息
 * 再用DataInputStream从文件读入商品信息
 * 处理后输出总价
 */
public class Commodity6 {
	public static void main(String args[])throws IOException{
		String[] Name0 = new String[]{"aaa","bbb","ccc","ddd","eee","fff"};
		double[] Price0 = new double[]{9.99,19.99,29.99,49.99,99.99,199.99};
		int[] Number0 = new int[]{10,15,45,24,7,51};
		int len0 = Name0.length;
		
		PrintWriter pw = new PrintWriter(new FileOutputStream("Commodity.txt"));
		//使用PrintWriter类可以解决乱码问题,输出1
		DataInputStream inp = new DataInputStream(new FileInputStream("Commodity.txt"));
		BufferedReader d = new BufferedReader(new InputStreamReader(inp));
		PrintWriter pw2 = new PrintWriter(new FileOutputStream("Result.txt"));
		//使用PrintWriter类可以解决乱码问题,输出2
	    
		int i = 0;
		for(i=0;i<len0;i++){
			pw.printf(Name0[i] + " ");
			pw.print(Price0[i]);
			pw.printf(" ");
			if(i != len0 - 1){
				pw.println(Number0[i]);
			}
			else{
				pw.print(Number0[i]);
			}

		}
		pw.close();
		
		ArrayList<String> Name = new ArrayList<String>();
		ArrayList<Double> Price = new ArrayList<Double>();
		ArrayList<Integer> Number = new ArrayList<Integer>();
		//注意:ArrayList类只支持对象类型,不支持 基础数据类型。
		//就是说ArrayList对象只能存放对象,不能存放基础数据类型的数据。
		
		String line;
		while((line = d.readLine()) != null){
			String[] tokens = line.split(" ");
			Name.add(tokens[0]);
			Price.add(Double.parseDouble(tokens[1]));
			Number.add(Integer.parseInt(tokens[2]));
		}
		inp.close();
		
		double cost = 0;
		int len = Name.size();
		for(i=0;i<len;i++){
			cost += Price.get(i) * Number.get(i);
		}
		
		pw2.printf("商品的总价为:%.4f",cost);
		pw2.close();
	}
}

Commodity.txt

aaa 9.99 10
bbb 19.99 15
ccc 29.99 45
ddd 49.99 24
eee 99.99 7
fff 199.99 51

Result.txt

商品的总价为:13848.4800
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DearMrDerek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值