/*
2017年3月13日16:17:38
java基礎50道經典練習題 例50
Athor: ZJY
Purpose:
【程序50】
題目:有五個學生,每個學生有3門課的成績,從鍵盤輸入
以上數據(包括學生號,姓名,三門課成績),計算出平均
成績,將原有的數據和計算出的平均分數存放在磁盤文件"stud"中。
*/
import java.io.*;
class Students { //定義學生模型
public int id; //學生的學號
public String name; //學生的姓名
public float[] grade = new float[3]; //學生的三門成績
public float sum; //學生三門成績之和
public Students(int id,
String name,
float[] grade,
float sum) {
this.id = id;
this.name = name;
this.grade[0] = grade[0];
this.grade[1] = grade[1];
this.grade[2] = grade[2];
this.sum = sum;
}
public static void traverse(Students stud) {
System.out.println(stud.id+" "+stud.name+" "+stud.grade[0]
+" "+stud.grade[1]+" "+stud.grade[2]+" "+stud.sum/3);
}
}
public class ProgramNo50_1
{
public static void main(String[] args) throws IOException {
Students[] stud = new Students[5];
infoInput(stud);
infoOutput(stud);
}
//學生信息的輸入 學號 姓名 成績
private static void infoInput(Students[] stud) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int id = 0;
String name = null;
float[] grade = new float[3];
float sum = 0;
boolean isRecord = true;
try {
while (isRecord) {
for (int i=0; i<stud.length; i++) {
System.out.print("輸入第"+(i+1)+"名學生的學號: ");
id = Integer.parseInt(br.readLine());
System.out.print("輸入第"+(i+1)+"名學生的姓名: ");
name = br.readLine();
sum = 0;
for (int j=0; j<grade.length; j++) {
System.out.print("輸入第"+(i+1)+"名學生的第"+(j+1)+"門成績: ");
grade[j] = Float.parseFloat(br.readLine());
sum += grade[j];
}
System.out.println();
stud[i] = new Students(id, name, grade, sum);
}
isRecord = false;
}
br.close();
}catch(NumberFormatException e) {
e.printStackTrace();
}
}
//學生信息的輸出 學號 姓名 成績
private static void infoOutput(Students[] stud) throws IOException {
FileWriter fw
= new FileWriter("G:/Project/java_object/java基礎50道經典練習題/topic50/學生信息1.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write(" NO. "+" name "+" grade1 "+"grade2 "+"grade3 "+"average ");
bw.newLine();
//for (int i=0; i<stud.length; i++)
//Students.traverse(stud[i]);
for (int i=0; i<stud.length; i++) {
if(stud[i].name.length() == 5) {
bw.write(stud[i].id+" ");
bw.write(stud[i].name+" ");
}else if(stud[i].name.length() > 6) {
bw.write(stud[i].id+" ");
bw.write(stud[i].name+" ");
}else {
bw.write(stud[i].id+" ");
bw.write(stud[i].name+" ");
}
for (int j=0; j<stud[i].grade.length; j++) {
bw.write(stud[i].grade[j]+" ");
}
bw.write((stud[i].sum/3)+" ");
bw.newLine();
}
bw.close();
}
}
/*
2017年3月13日16:17:38
java基礎50道經典練習題 例50
Athor: ZJY
Purpose:
*/
import java.io.*;
public class ProgramNo50_2
{
//定義學生模型
String[] number = new String[5];
String[] name = new String[5];
float[][] grade = new float[5][3];
float[] sum = new float[5];
public static void main(String[] args) throws Exception{
ProgramNo50_2 stud = new ProgramNo50_2();
stud.input();
stud.output();
}
//輸入學號、姓名、成績
void input() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//錄入狀態標識
boolean isRecord = true;
while(isRecord){
try{
for(int i=0; i<5; i++) {
System.out.print("請輸入學號:");
number[i] = br.readLine();
System.out.print("請輸入姓名:");
name[i] = br.readLine();
for(int j=0; j<3; j++) {
System.out.print("請輸入第"+(j+1)+"門課成績:");
grade[i][j] = Integer.parseInt(br.readLine());
}
System.out.println();
sum[i] = grade[i][0]+grade[i][1]+grade[i][2];
}
isRecord = false;
}catch(NumberFormatException e){
System.out.println("請輸入一個數字!");
}
}
}
//輸出文件
void output() throws IOException{
FileWriter fw = new FileWriter("G:/Project/java_object/java基礎50道經典練習題/topic50/學生信息2.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("No. "+"Name "+"grade1 "+"grade2 "+"grade3 "+"average");
bw.newLine();
for(int i=0; i<5; i++) {
bw.write(number[i]);
bw.write(" "+name[i]);
for(int j=0; j<3; j++)
bw.write(" "+grade[i][j]);
bw.write(" "+(sum[i]/5));
bw.newLine();
}
bw.close();
}
}