更新时间2019-08-10 05:35:32
第一段:
import java.util.*;
public class 学生管理{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入学生的人数:");
int a=in.nextInt();//变量a用来存储学生的人数
System.out.println("请输入课程的个数");
int b=in.nextInt();//变量b用来存储课程的个数
String[] c=new String[b];//数组c用来存储课程的名称
String[] d=new String[a];//数组d用来存储学生的姓名
int[][] e=new int[a][b];//数组e用来存储特定学生特定的各个课程的成绩
int[] f=new int[a];//数组f用来储存特定学生的各科成绩总分
int[] g=new int[a];//数组g用来存储特定学生总分的平均分
String[] h=new String[a];//数组h用来存储学生的全部信息
for(int i=0;i<b;i++){
System.out.println("请输入第"+(i+1)+"门课程的名称:");
c[i]=in.next();
}
/*
上面的for循环是循环录入并且存储输入的课程名称
*/
for(int i=0;i<a;i++){
System.out.println("请输入第"+(i+1)+"名学生的姓名:");
d[i]=in.next();
String k="";
int sum=0;//变量sum用来标记总分的初始值
for(int j=0;j<b;j++){
System.out.println("请输入"+d[i]+"的"+c[j]+"成绩");
e[i][j]=in.nextInt();
sum+=e[i][j];
k+=e[i][j]+" ";
}
f[i]=sum;
g[i]=sum/b;
h[i]=d[i]+" "+k+f[i]+" "+g[i];
}
/*
上面的for循环是循环录入特定学生特定的各科课程并计算总分和平均分
*/
for(int i=0;i<f.length-1;i++){
for(int j=0;j<f.length-1;j++){
if(f[j]<f[j+1]){
int t1=f[j];String t=h[j];
f[j]=f[j+1];h[j]=h[j+1];
f[j+1]=t1;h[j+1]=t;
}
}
}
System.out.print("姓名 ");
for(int i=0;i<b;i++){
System.out.print(c[i]+" ");
}
System.out.println("总分 平均分 名次");
for(int i=0;i<a;i++){
System.out.println(h[i]+" 第"+(i+1)+"名");
}
}
}
第二段
import java.util.*;
public class 学生管理{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入学生的人数:");
int a=in.nextInt();//变量a用来存储学生的人数
System.out.println("请输入课程的个数");
int b=in.nextInt();//变量b用来存储课程的个数
String[] c=new String[b];//数组c用来存储课程的名称
String[] d=new String[a];//数组d用来存储学生的姓名
int[][] e=new int[a][b];//数组e用来存储特定学生特定的各个课程的成绩
int[] f=new int[a];//数组f用来储存特定学生的各科成绩总分
int[] g=new int[a];//数组g用来存储特定学生总分的平均分
String[] h=new String[a];//数组h用来存储学生的全部信息
for(int i=0;i<b;i++){
System.out.println("请输入第"+(i+1)+"门课程的名称:");
c[i]=in.next();
}
/*
上面的for循环是循环录入并且存储输入的课程名称
*/
for(int i=0;i<a;i++){
System.out.println("请输入第"+(i+1)+"名学生的姓名:");
d[i]=in.next();
String k="";
int sum=0;//变量sum用来标记总分的初始值
for(int j=0;j<b;j++){
System.out.println("请输入"+d[i]+"的"+c[j]+"成绩");
e[i][j]=in.nextInt();
sum+=e[i][j];
k+=e[i][j]+" ";
}
f[i]=sum;
g[i]=sum/b;
h[i]=d[i]+" "+k+f[i]+" "+g[i];
}
/*
上面的for循环是循环录入特定学生特定的各科课程并计算总分和平均分
*/
for(int i=0;i<f.length-1;i++){
for(int j=0;j<f.length-1;j++){
if(f[j]<f[j+1]){
String t=h[j];
h[j]=h[j+1];
h[j+1]=t;
}
}
}
System.out.print("姓名 ");
for(int i=0;i<b;i++){
System.out.print(c[i]+" ");
}
System.out.println("总分 平均分 名次");
for(int i=0;i<a;i++){
System.out.println(h[i]+" 第"+(i+1)+"名");
}
}
}
而第一个程序 ,在排序交换中,交换了h和f的值
for (int i = 0; i < f.length - 1; i++) {
for (int j = 0; j < f.length - 1; j++) {
if (f[j] < f[j + 1]) {
int t1 = f[j];
String t = h[j];
f[j] = f[j + 1];
h[j] = h[j + 1];
f[j + 1] = t1;
h[j + 1] = t;
而第二个程序,只交换了h的值
if (f[j] < f[j + 1]) {
String t = h[j];
h[j] = h[j + 1];
h[j + 1] = t;
}
两个程序交换代码不同,结果当然不同了