JAVA基本輸入輸出流的幾種用法——以簡單商品管理系統爲例

JAVA基本輸入輸出流的幾種用法——以簡單商品管理系統爲例

1.使用正常數組,使用DataOutputStream

package Commodity_System;

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

/*
 * 使用正常數組,使用DataOutputStream
 */
public class Commodity {
	public static void main(String args[])throws IOException{
		DataInputStream inp = new DataInputStream(new FileInputStream("Commodity.txt"));
		DataOutputStream outp = new DataOutputStream(new  FileOutputStream("Result1.txt"));
		//使用DataOutputStream能正常寫入,但會出現亂碼
		BufferedReader d = new BufferedReader(new InputStreamReader(inp));
		String[] Name = new String[100];
		double[] Price = new double[100];
		int[] Number = new int[100];
		double cost = 0;
		int i = 0;
		
		String line;
		while((line = d.readLine()) != null){
			String[] tokens = new String[10];
			tokens = line.split(" ");
			Name[i] = tokens[0];
			Price[i] = Double.parseDouble(tokens[1]);
			Number[i] = Integer.parseInt(tokens[2]);
			i += 1;
		}
		
		int len = i;
		
		for(i=0;i<len;i++){
			cost += Price[i] * Number[i];
		}
		inp.close();
		
		outp.writeDouble(cost);
		outp.close();
	}
}

2.使用正常數組,使用PrintWriter類解決亂碼問題

package Commodity_System;

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

/*
 * 使用正常數組,使用PrintWriter類解決亂碼問題
 */
public class Commodity2 {
	public static void main(String args[])throws IOException{
		DataInputStream inp = new DataInputStream(new FileInputStream("Commodity.txt"));
		BufferedReader d = new BufferedReader(new InputStreamReader(inp));
		PrintWriter pw = new PrintWriter(new FileOutputStream("Result2.txt"));
		//使用PrintWriter類可以解決亂碼問題
		String[] Name = new String[100];
		double[] Price = new double[100];
		int[] Number = new int[100];
		double cost = 0;
		int i = 0;
		
		String line;
		while((line = d.readLine()) != null){
			String[] tokens = new String[10];
			tokens = line.split(" ");
			Name[i] = tokens[0];
			Price[i] = Double.parseDouble(tokens[1]);
			Number[i] = Integer.parseInt(tokens[2]);
			i += 1;
		}
		
		int len = i;
		
		for(i=0;i<len;i++){
			cost += Price[i] * Number[i];
		}
		inp.close();
		
		pw.printf("商品的總價爲:%.4f",cost);
		pw.close();
	}
}

3.使用動態數組ArrayList,使用DataOutputStream

package Commodity_System;

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

/*
 * 使用動態數組ArrayList,使用DataOutputStream
 */
public class Commodity3 {
	public static void main(String args[])throws IOException{
		DataInputStream inp = new DataInputStream(new FileInputStream("Commodity.txt"));
		DataOutputStream outp = new DataOutputStream(new  FileOutputStream("Result3.txt"));
		BufferedReader d = new BufferedReader(new InputStreamReader(inp));
		//注意:ArrayList類只支持對象類型,不支持 基礎數據類型。
		//就是說ArrayList對象只能存放對象,不能存放基礎數據類型的數據。
		ArrayList<String> Name = new ArrayList<String>();
		ArrayList<Double> Price = new ArrayList<Double>();
		ArrayList<Integer> Number = new ArrayList<Integer>();
		double cost = 0;
		int i = 0;
		
		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]));
		}
		int len = Name.size();
		for(i=0;i<len;i++){
			cost += Price.get(i) * Number.get(i);
		}
		inp.close();
		outp.writeDouble(cost);
		outp.close();
	}
}

4.使用動態數組ArrayList,使用PrintWriter類解決亂碼問題

package Commodity_System;

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

/*
 * 使用動態數組ArrayList,使用PrintWriter類解決亂碼問題
 */
public class Commodity4 {
	public static void main(String args[])throws IOException{
		DataInputStream inp = new DataInputStream(new FileInputStream("Commodity.txt"));
		BufferedReader d = new BufferedReader(new InputStreamReader(inp));
		//使用BufferedReader輸出文件會有亂碼,但不影響二次讀取
		PrintWriter pw = new PrintWriter(new FileOutputStream("Result4.txt"));
		//使用PrintWriter類可以解決亂碼問題
		ArrayList<String> Name = new ArrayList<String>();
		ArrayList<Double> Price = new ArrayList<Double>();
		ArrayList<Integer> Number = new ArrayList<Integer>();
		//注意:ArrayList類只支持對象類型,不支持 基礎數據類型。
		//就是說ArrayList對象只能存放對象,不能存放基礎數據類型的數據。
		double cost = 0;
		int i = 0;
		
		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]));
		}
		int len = Name.size();
		for(i=0;i<len;i++){
			cost += Price.get(i) * Number.get(i);
		}
		inp.close();
		pw.printf("商品的總價爲:%.4f",cost);
		pw.close();
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章