day10:综合任务1

day10:综合任务1,第1张

day10:综合任务1

任务要求:

学生成绩存放于一个矩阵,其中行表示学生,列表示科目。如:第 0 行表示第 0 个学生的数学、语文、英语成绩。要求:

  1. 进行学生成绩的随机生成, 区间为 [50, 100].
  2. 找出成绩最好、最差的同学。但有挂科的同学不参加评比.

注意:

①Arrays.toString 一维数组与Arrays.deepToString 多维数组的区别;

②continue与break的区别。

package test;

import java.util.Arrays;
import java.util.Random;



public class Task1 {

	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		task1();

	}// Of main
	
	
	public static void task1(){
		// Step 1. Generate the data with n students and m courses.
		// Set these values by yourself.
		int n = 10;
		int m = 3;
		int lowerBound = 50;
		int upperBound = 100;
		int threshold = 60;
		
		// Here wo have to use an object to generate the random numbers.
		Random tempRandom = new Random();
		int[][] data = new int[n][m];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				data[i][j] = lowerBound + tempRandom.nextInt(upperBound - lowerBound);
			} // Of for j
		} // Of for i
		
     	System.out.println("The data is:rn" + Arrays.deepToString(data));
     	
        // Step 2. Compute the total score of each student.
     	int[] totalScores = new int[n];
     	for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				if (data[i][j] < threshold) {
					totalScores[i] = 0;
					break;
				} // Of if
				totalScores[i] += data[i][j];
			} // Of for j
		} // Of for i

     	System.out.println("The total scores are:rn" + Arrays.toString(totalScores));
     	
     	// Step 3. Find the best and worst student.
     	// Typical initialization for index: invalid value.索引的典型初始化:无效值。
     	int tempBestIndex = -1;
     	int tempWorstIndex = -1;
     	
     	// Typical initialization for best and worst values.
     	// They must be replaced by valid values. 必须用有效值代替。
     	int tempBestScore = 0;
     	int tempWorstScore = m * upperBound + 1;
     	
     	for (int i = 0; i < n; i++) {
			
     		// Do not consider failed students.
     		if (totalScores[i] == 0) {
     			continue;
     		} // Of if 
     		
     		if (tempBestScore < totalScores[i]) {
     			tempBestScore = totalScores[i];
     			tempBestIndex = i;
     		} // Of if
     		
     		// Attention: This if statement cannot be combined with last one.
     		// Using "else if", because a student can be both the best and the worst.
     		// This bug while setting upperBound = 65.
			if (tempWorstScore > totalScores[i]) {
				tempWorstScore = totalScores[i];
			    tempWorstIndex = i;
			} // Of if
		} // Of for i
     	
		// Step 4. Output the student number and score.
		if (tempBestIndex == -1) {
			System.out.println("Cannot find best student. All students have failed.");
		} else {
			System.out.println("The best student is No." + tempBestIndex + " with scores: " + Arrays.toString(data[tempBestIndex]));
		} // Of if

		if (tempWorstIndex == -1) {
			System.out.println("Cannot find worst student. All students have failed.");
		} else {
			System.out.println("The worst student is No." + tempWorstIndex + " with scores: " + Arrays.toString(data[tempWorstIndex]));
		} // Of if
     	
	}// Of task1

}// Of class Task1

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5694740.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存