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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章