作業(yè):學(xué)生成績(jī)統(tǒng)計(jì)
請(qǐng)輸入學(xué)生人數(shù) 如:5
請(qǐng)輸入第一個(gè)學(xué)生的成績(jī) 如:85.5
請(qǐng)輸入第n個(gè)同學(xué)的成績(jī)* 請(qǐng)輸入第五個(gè)學(xué)生的成績(jī) 如:60.0
輸出:平均成績(jī)??分 最高成績(jī)??分 最低分??分*
其中??人不及格
請(qǐng)輸入操作 0.退出程序 1.繼續(xù)錄入成績(jī)(擴(kuò)容)
思維流程圖

核心代碼
計(jì)算成績(jī)的統(tǒng)計(jì)信息
public static int calculateGradeStats(ArrayList<Double> grades) {
double sum = 0;
double maxGrade = Double.MIN_VALUE;
double minGrade = Double.MAX_VALUE;
int numFail = 0;
for (double grade : grades) {
sum += grade;
if (grade < 60) {
numFail++;
}
if (grade > maxGrade) {
maxGrade = grade;
}
if (grade < minGrade) {
minGrade = grade;
}
}
double average = sum / grades.size();
System.out.println("平均成績(jī):" + average + "分");
System.out.println("最高成績(jī):" + maxGrade + "分");
System.out.println("最低成績(jī):" + minGrade + "分");
System.out.println(numFail + "人不及格");
return numFail;
}
這段代碼定義了一個(gè)靜態(tài)方法calculateGradeStats,該方法接收一個(gè)ArrayList類型的參數(shù)grades,其中包含了學(xué)生的成績(jī)(以 double 類型表示)。方法首先初始化了一些變量,包括總成績(jī)sum、最高成績(jī)maxGrade、最低成績(jī) minGrade和不及格人數(shù)numFail。
接著使用 for-each 循環(huán)遍歷傳入的成績(jī)列表,累加總成績(jī) sum,并根據(jù)成績(jī)是否小于60來(lái)增加不及格人數(shù) numFail。同時(shí),方法會(huì)更新最高成績(jī)和最低成績(jī)的值。
然后,方法計(jì)算平均成績(jī)average,并打印出平均成績(jī)、最高成績(jī)、最低成績(jī)和不及格人數(shù)的信息。最后,方法返回不及格人數(shù) numFail。
繼續(xù)操作
while (option != 0) {
System.out.println("請(qǐng)輸入操作:0.退出程序 1.繼續(xù)錄入成績(jī)(擴(kuò)容)");
option = sc.nextInt();
if (option == 1) {
System.out.print("請(qǐng)輸入要添加的學(xué)生人數(shù):");
int numToAdd = sc.nextInt();
for (int i = 0; i < numToAdd; i++) {
System.out.print("請(qǐng)輸入第" + (numStudent + i + 1) + "個(gè)學(xué)生的成績(jī):");
double grade = sc.nextDouble();
grades.add(grade);
}
numStudent += numToAdd;
numFail = calculateGradeStats(grades);
System.out.println(numFail + "人不及格");
}
完整代碼
import java.util.ArrayList;
import java.util.Scanner;
public class Text5_12 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入學(xué)生人數(shù):");
int numStudent = sc.nextInt();
ArrayList<Double> grades = new ArrayList<>();
// 循環(huán)輸入學(xué)生成績(jī)
for (int i = 0; i < numStudent; i++) {
System.out.print("請(qǐng)輸入第" + (i + 1) + "個(gè)學(xué)生的成績(jī):");
double grade = sc.nextDouble();
grades.add(grade);
}
// 計(jì)算不及格人數(shù)
int numFail = calculateGradeStats(grades);
int option = 1;
// 循環(huán)進(jìn)行操作
while (option != 0) {
System.out.println("請(qǐng)輸入操作:0.退出程序 1.繼續(xù)錄入成績(jī)(擴(kuò)容)");
option = sc.nextInt();
if (option == 1) {
System.out.print("請(qǐng)輸入要添加的學(xué)生人數(shù):");
int numToAdd = sc.nextInt();
for (int i = 0; i < numToAdd; i++) {
System.out.print("請(qǐng)輸入第" + (numStudent + i + 1) + "個(gè)學(xué)生的成績(jī):");
double grade = sc.nextDouble();
grades.add(grade);
}
numStudent += numToAdd;
numFail = calculateGradeStats(grades);
System.out.println(numFail + "人不及格");
}
}
sc.close();
}
// 計(jì)算成績(jī)的統(tǒng)計(jì)信息
public static int calculateGradeStats(ArrayList<Double> grades) {
double sum = 0;
double maxGrade = Double.MIN_VALUE;
double minGrade = Double.MAX_VALUE;
int numFail = 0;
for (double grade : grades) {
sum += grade;
if (grade < 60) {
numFail++;
}
if (grade > maxGrade) {
maxGrade = grade;
}
if (grade < minGrade) {
minGrade = grade;
}
}
double average = sum / grades.size();
System.out.println("平均成績(jī):" + average + "分");
System.out.println("最高成績(jī):" + maxGrade + "分");
System.out.println("最低成績(jī):" + minGrade + "分");
System.out.println(numFail + "人不及格");
return numFail;
}
}
總結(jié):
總結(jié)就是沒(méi)有總結(jié),純自?shī)首詷?lè)