JAVA基本輸入輸出流的幾種用法——以簡單商品管理系統爲例
1.使用正常數組,使用DataOutputStream
package Commodity_System;
import java.io.*;
import java.lang.String;
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"));
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;
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"));
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;
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<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;
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));
PrintWriter pw = new PrintWriter(new FileOutputStream("Result4.txt"));
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();
pw.printf("商品的總價爲:%.4f",cost);
pw.close();
}
}