for循环与数组运用

一、学生成绩录入与输出

此实例中,从键盘获取需要录入成绩的学生人数,然后继续输入每位学生的各科成绩。

输出学生各科成绩;输出学生所有科目的平均分与总分;输出每门课程的平均分。

1.代码如下:

package work3_20220914;

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		
		Scanner input = new Scanner(System.in);
		//获取学生人数
		System.out.print("请输入需要录入学生人数:");
		int num = input.nextInt();
		
		//动态二维数组,存储录入的学生成绩
		double[][] student = new double[num][3];
		
		//静态数组,用来存储课程名字
		String[] course = {"语文","数学","英语"};
		
		//通过for循环录入每位同学成绩
		//第一层循环为数组行数,表示同学人数
		for (int i = 0; i < student.length; i++) {
			System.out.println("第" + (i + 1) + "位同学成绩录入:");
			//第二层循环为数组列数,表示每门课程成绩
			for (int j = 0; j < student[0].length; j++) {
				System.out.print(course[j] + ":");
				student[i][j] = input.nextDouble();
			}
		}
		
		double[] average = new double[course.length];//储存每门课程的平均成绩情况
		
		for (int i = 0; i < course.length; i++) {
			double scoreAll = 0;
			for (int j = 0; j < num; j++) {
				scoreAll += student[j][i];
			}
			average[i] = scoreAll / num;
		}
		
		double[][] avStudent = new double[num][2];//记录每位同学的总成绩和平均分情况
		
		for (int i = 0; i < avStudent.length; i++) {
			double sum = 0;
			double ave = 0;
			for (int j = 0; j < course.length; j++) {
				sum += student[i][j];
			}
			avStudent[i][0] = sum;
			avStudent[i][1] = sum / course.length;
		}
		
		//输出录入学生的成绩情况
		System.out.println("----------输出录入学生的成绩情况------------");
		System.out.println("录入的" + num + "位同学成绩如下:");
		System.out.print("姓名  \t");
		for (int i = 0; i < course.length; i++) {
			System.out.print(course[i] + "  \t");
		}
		System.out.println();
		for (int i = 0; i < student.length; i++) {
			System.out.print("学生"+ (i+1) +":  \t" );
			for (int j = 0; j < student[0].length; j++) {
				System.out.print(student[i][j] + "  \t");				
			}
			System.out.println();
		}
		
		//输出每门课的平均成绩
		System.out.println("-----------输出每门课的平均成绩-----------");
		System.out.println("每门课的平均成绩如下:");
		for (int i = 0; i < course.length; i++) {
			System.out.print(course[i] + "  \t");
		}
		System.out.println();
		for (int i = 0; i < average.length; i++) {
			System.out.print(String.format("%.1f  \t", average[i]));//通过字符串的占位符保留一位小数
		}
		System.out.println();
		
		//输出每位同学的总成绩和平均成绩
		System.out.println("---------输出每位同学的总成绩和平均成绩----------");
		System.out.println("姓名  \t总成绩  \t平均分  \t");
		for (int i = 0; i < avStudent.length; i++) {
			System.out.println(String.format("同学%d:  \t%.1f  \t%.1f  \t", (i + 1),avStudent[i][0],avStudent[i][1]));
		}
	}
}

二、运行结果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值