分别用了普通的直接main方法和构造方法产生实例来实现,原理是一样的。
package javaexc;
public class Score {
public static void main(String[] args) {
// 定义存储分数数组
int score[][]=new int[20][5];
//总分
int sumscore=0;
//存储总分的一维数组
int sumscores[]=new int[20];
//平均分
int avescore=0;
System.out.print("core C++\t"+"coreJava\t"+"Servlet\t\t"+"JSP\t\t"+"EJB\t\t"+"sumscores");
System.out.println();
for(int i=0;i<20;i++){
for(int j=0;j<5;j++){
//用双层循环给数组赋值,random是产生0~1之间的小数,不包括0和1,乘100再加1就是1~101,向下取整数,正好是1到100
score[i][j]=(int) Math.floor(100*Math.random()+1);
System.out.print(score[i][j]+"\t\t");
//总分累加,在行数相同时
sumscore+=score[i][j];
//把总分赋给存储数组
sumscores[i]=sumscore;
//求平均分,就是竖列相同时,累加,这里取的是j=0,c++课程的平均成绩
if(j==0)
avescore+=score[i][j];
}
System.out.print(sumscores[i]);
//这里要把sumscore清零,再次进入循环时不会加前一行的分数
sumscore=0;
System.out.println();
}
System.out.println("平均分:\t"+avescore);
}
}
package javaexc;
public class ScoreTest {
int score[][]=new int[20][5];
int sumscore=0;
int sumscores[]=new int[20];
int avescore=0;
//构造方法。
public ScoreTest(){}
//给二维数组赋值并且打印的方法
public void printscore(){
for(int i=0;i<20;i++){
for(int j=0;j<5;j++){
score[i][j]=(int) Math.floor(100*Math.random()+1);
System.out.print(score[i][j]+"\t\t");
}
System.out.println();
}
}
//求总成绩的方法
public void Sumscore(){
System.out.println("总分:");
for(int i=0;i<20;i++){
for(int j=0;j<5;j++){
sumscore+=score[i][j];
sumscores[i]=sumscore;
}
System.out.print(sumscores[i]);
sumscore=0;
System.out.println();
}
}
//求平均成绩的方法,这里带了参数n,n=0,1,2,3,4分别表示不同课程。
public void Avescore(int n){
for(int i=0;i<20;i++){
for(int j=0;j<5;j++){
if(j==n)
avescore+=score[i][j];
}
}
System.out.println("平均分:\t"+avescore);
}
public static void main(String[] args) {
// 用构造方法产生实例ST
ScoreTest ST=new ScoreTest();
System.out.print("core C++\t"+"coreJava\t"+"Servlet\t\t"+"JSP\t\t"+"EJB");
System.out.println();
//ST分别调用赋值,求总成绩,求平均成绩的方法。
ST.printscore();
ST.Sumscore();
ST.Avescore(3);
}
}
温馨提示:答案为网友推荐,仅供参考