1. 程式人生 > >java程式設計之輸入並進行計算

java程式設計之輸入並進行計算

/*
 *使用 字元流 程式設計實現以下功能 (1)從鍵盤輸入姓名、學號、成績,並儲存到文字檔案中,重複進行,直到輸入空字串為止 (2)從檔案中讀取各學生的成績,並計算所有學生成績的平均值、最大值和最小值 
 */
 import java.io.*;

public class inputdata{
	public static void main(String args[]) throws IOException{
		String s;  //暫存字串
        InputStreamReader isr=new InputStreamReader(System.in);//建立輸入流
        BufferedReader br=new BufferedReader(isr);//建立緩衝BufferedReader物件br,關聯到isr
        FileWriter fw=new FileWriter("c:\\student.txt");//建立檔案輸出 FileWriter類物件fw
        BufferedWriter bw=new BufferedWriter(fw);//建立帶緩衝的BufferedWriter類物件bw,並關聯到fw
        System.out.println("請輸入姓名:(以空行結束)");//將讀入字串寫入到檔案中
        int linenum=0;
        while(true){//迴圈讀入字串
           System.out.println("輸入姓名、學號: ");
           linenum++;
           System.out.flush();//清空輸出緩衝區
           s = br.readLine();//讀入輸入的一行
           if(s.length()==0)break;//若遇到空行則break,結束讀-寫工作
           bw.write(s);//將本行字串寫出到物件bw
           bw.newLine();  //在物件bw中建立新行,為下一行輸出做準備 
           System.out.println("輸入成績: ");//以下與上方同理
           linenum++;
           System.out.flush();
           s = br.readLine();
           bw.write(s);
           bw.newLine(); 
       }
       br.close();//關閉輸出物件
       bw.close();
       System.out.println("輸入的姓名,學號,成績存入到c:\\student.txt檔案");
       
       FileReader fr=new FileReader("c:\\student.txt");   //建立File物件,並開啟檔案,作為寫出資料的目標
       BufferedReader br1=new BufferedReader(fr);    //建立緩衝BufferedReader物件br1,關聯到fr
       String s1;  // 變數的宣告
       double temp=0,average=0,sum=0,min=100,max=0;
       linenum=0;
       s1=br1.readLine(); //讀入一行
       while(s1!=null){  //當不為空時執行下列語句
         linenum++;  //行數加一
         if(linenum%2==0){  //判斷行數 如果是2 的倍數 即為成績行 進行如下操作
         	//bw.write(s);  //寫入s
         	temp=Double.parseDouble(s1);  //強制轉換成double型
         	sum=sum+temp;  //加和
         	
         	if(temp>max){  //判斷如果temp比max大
         		max=temp;  //則將temp值賦給max
         	}
         	if(temp<min){  //判斷如果temp比min小
         		min=temp;  //則將temp值賦給min
         	}
         	
         }
         
         //bw.newLine();  //新建行
         s1=br1.readLine();  //讀行
        }
        average=sum/(linenum/2);  //成績的總和除以成績數計算平均值  
       System.out.println("成績的平均值"+average);  //輸出結果
       System.out.println("成績的最大值"+max);
       System.out.println("成績的最小值"+min);
       
       br1.close();//關閉輸出物件
       
	}
}