A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package com.hu.student;

  2. import java.util.*;

  3. public class Main {
  4.         public static void main(String[] agrs) {
  5.                 Scanner in = new Scanner(System.in);
  6.                 System.out.print("请输入学生的人数:");
  7.                 int renshu = in.nextInt();
  8.                 System.out.print("请输入课程的数目:");
  9.                 int course = in.nextInt();
  10.                 int[] sum = new int[renshu];
  11.                 int[] avg = new int[renshu];
  12.                 String[] arrRenshu = new String[renshu];// 接收学生的人数
  13.                 String[] arrCourse = new String[course];// 接收科目的数量
  14.                 int[][] number = new int[renshu][course];
  15.                 String[] str = new String[renshu]; //学生参数汇总
  16.                 for (int i = 0; i < course; i++) {
  17.                         System.out.print("请输入第" + (i + 1) + "的科目名称:");
  18.                         arrCourse[i] = in.next();
  19.                 }
  20.                 for (int i = 0; i < renshu; i++) {
  21.                         int s = 0;
  22.                         String str11 = "";
  23.                         System.out.print("请输入第" + (i + 1) + "个学生的名字:");
  24.                         arrRenshu[i] = in.next();
  25.                         for (int j = 0; j < course; j++) {
  26.                                 System.out.print("请输入" + arrRenshu[i] + arrCourse[j] + "的成绩:");
  27.                                 number[i][j] = in.nextInt();
  28.                                 s += number[i][j];
  29.                                 str11+= number[i][j]+"\t";
  30.                         }
  31.                         sum[i] = s;
  32.                         avg[i] = s / course;
  33.                         str[i] = arrRenshu[i]+"\t"+str11+sum[i]+"\t"+avg[i];               
  34.                 }
  35.                 for(int i=0; i<sum.length-1; i++){
  36.                         for(int j=0; j<sum.length-1; j++){
  37.                                 if(sum[j]<sum[j+1]){
  38.                                         int t1 = sum[j];     String t2 = str[j];
  39.                                         sum[j] = sum[j+1];            str[j] = str[j+1];
  40.                                   sum[j+1] = t1;                        str[j+1] = t2;       
  41.                                 }
  42.                         }
  43.                 }
  44.                 System.out.print("学生");
  45.                 for (int i = 0; i < course; i++) {
  46.                         System.out.print("\t" + arrCourse[i]);
  47.                 }
  48.                 System.out.print("\t总分" + "\t平均分" + "\t排行榜");
  49.                 System.out.println();
  50.                 for (int i = 0; i < renshu; i++) {
  51.                         System.out.print(str[i]+"\t第"+(i+1)+"名");
  52.                         System.out.println();
  53.                 }
  54.         }
  55. }
复制代码


还有哪里需要改进的 请多多指教

8 个回复

倒序浏览
int renshu = in.nextInt();
int course = in.nextInt();等
对于用户输入的数据没有判断就使用,程序健壮性不强。
回复 使用道具 举报
感觉int[][] number数组的作用没有体现出来 直接用一个一维数组每输入完整一个学生的成绩就将数组清空比较节省空间
回复 使用道具 举报
ko889910 发表于 2015-3-4 22:01
感觉int[][] number数组的作用没有体现出来 直接用一个一维数组每输入完整一个学生的成绩就将数组清空比较 ...

不清空直接覆盖就行
  1. package com.sun.question;

  2. import java.util.*;

  3. public class Main {
  4.         public static void main(String[] agrs) {
  5.                 Scanner in = new Scanner(System.in);
  6.                 System.out.print("请输入学生的人数:");
  7.                 int renshu = in.nextInt();
  8.                 System.out.print("请输入课程的数目:");
  9.                 int course = in.nextInt();
  10.                 int[] sum = new int[renshu];
  11.                 int[] avg = new int[renshu];
  12.                 String[] arrRenshu = new String[renshu];// 接收学生的人数
  13.                 String[] arrCourse = new String[course];// 接收科目的数量
  14.                 int[] score = new int[course];
  15.                 String[] str = new String[renshu]; //学生参数汇总
  16.                 for (int i = 0; i < course; i++) {
  17.                         System.out.print("请输入第" + (i + 1) + "的科目名称:");
  18.                         arrCourse[i] = in.next();
  19.                 }
  20.                 for (int i = 0; i < renshu; i++) {
  21.                         int s = 0;
  22.                         String str11 = "";
  23.                         System.out.print("请输入第" + (i + 1) + "个学生的名字:");
  24.                         arrRenshu[i] = in.next();
  25.                         for (int j = 0; j < course; j++) {
  26.                                 System.out.print("请输入" + arrRenshu[i] + arrCourse[j] + "的成绩:");
  27.                                 score[j] = in.nextInt();
  28.                                 s += score[j];
  29.                                 str11+= score[j]+"\t";
  30.                         }
  31.                         sum[i] = s;
  32.                         avg[i] = s / course;
  33.                         str[i] = arrRenshu[i]+"\t"+str11+sum[i]+"\t"+avg[i];               
  34.                 }
  35.                 for(int i=0; i<sum.length-1; i++){
  36.                         for(int j=0; j<sum.length-1; j++){
  37.                                 if(sum[j]<sum[j+1]){
  38.                                         int t1 = sum[j];     String t2 = str[j];
  39.                                         sum[j] = sum[j+1];            str[j] = str[j+1];
  40.                                   sum[j+1] = t1;                        str[j+1] = t2;        
  41.                                 }
  42.                         }
  43.                 }
  44.                 System.out.print("学生");
  45.                 for (int i = 0; i < course; i++) {
  46.                         System.out.print("\t" + arrCourse[i]);
  47.                 }
  48.                 System.out.print("\t总分" + "\t平均分" + "\t排行榜");
  49.                 System.out.println();
  50.                 for (int i = 0; i < renshu; i++) {
  51.                         System.out.print(str[i]+"\t第"+(i+1)+"名");
  52.                         System.out.println();
  53.                 }
  54.         }
  55. }
复制代码

回复 使用道具 举报
好长,好长。
回复 使用道具 举报
ko889910 发表于 2015-3-4 22:01
感觉int[][] number数组的作用没有体现出来 直接用一个一维数组每输入完整一个学生的成绩就将数组清空比较 ...

那学生的姓名 跟成绩 用一个一维数组怎么接收呢 ??
回复 使用道具 举报
Johnny_Hu 发表于 2015-3-5 17:32
那学生的姓名 跟成绩 用一个一维数组怎么接收呢 ??

我三楼贴的代码就是用一维数组接收的,只改了你的代码的两三行
回复 使用道具 举报
我拿去运行下看看。学习下
回复 使用道具 举报
int renshu = in.nextInt(); 对于输入,如果我输入一个@会怎样,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马