題目分析:
1.首先想到的是數組存放數據,數組肯定是String類型.
2.String類型的數組,5行6列.要把從第0行第2列到第4行第4列的數據取出轉換成數值型,再統計三科總分.最后把計算出的總分轉換成String類型放回數組的第5列.
3.將string類型的數組寫入到文件,再從文件讀出顯示到控制台
遇到的困難:
1.反復的類型轉換
1 import java.io.File; 2 import java.io.FileOutputStream; 3 import java.io.FileReader; 4 import java.io.OutputStream; 5 import java.io.PrintStream; 6 import java.util.Scanner; 7 public class Test2 { 8 public static void main(String[] args) throws Exception{ 9 float sum=0f; 10 Scanner input=new Scanner(System.in); 11 File f = new File("D:"+File.separator+"test.txt"); 12 PrintStream ps = new PrintStream(f); 13 ps.println("姓名 學號 英語 計算機語言 數據庫 總分"); 14 OutputStream out = new FileOutputStream(f,true); 15 //用FileOutputSteam包裝文件,並設置文件可追加 16 String[][] stu=new String[5][6]; 17 float[][] score=new float[5][5];//接收各科分數 18 19 System.out.println("請依次輸入學生的學號,姓名,英語,計算機語言和數據庫的成績"); 20 for(int i=0;i<5;i++){ 21 System.out.println("第"+(i+1)+"位:"); 22 for(int j=0;j<5;j++){ 23 stu[i][j]=input.nextLine(); //從鍵盤接收數據,以回車分隔 24 } 25 } 26 for(int i=0;i<5;i++){ 27 for(int j=2;j<5;j++){ 28 score[i][j]=Float.parseFloat(stu[i][j]);//String類型轉換為Float類型 29 sum+=score[i][j];//總分 30 } 31 stu[i][5]=(String.valueOf(sum));//float類型轉換為string類型放回String數組 32 sum=0; //計算完一位同學的總分后清零 33 } 34 for(int i=0;i<5;i++){ 35 for(int j=0;j<6;j++){ 36 out.write(stu[i][j].getBytes()); //將String轉換為byte類型,向文件中寫入數據 37 out.write('\t');//各數據之間的分隔,相當於tab 38 } 39 out.write('\r');//換行符 40 } 41 out.close(); //關閉輸出流 42 System.out.println("寫入成功!"); 43 44 FileReader fr = new FileReader("d:\\test.txt"); 45 char[] bchar= new char[1024]; 46 int len = 0; 47 while((len = fr.read(bchar)) != -1){//直到文件讀取結束 48 System.out.print(new String(bchar,0,len));//輸出文件所有內容 49 } 50 fr.close(); 51 } 52 }