建设银行网站不主动弹出,深圳市凡客创品科技有限公司,典当行网站策划,山东建设企业网站参考链接#xff1a; Java程序的输出 20(继承) 
一、项目名称 数组实现学生成绩统计 二、项目描述 1.项目简介#xff1a; 由用户输入学生人数与名字#xff0c;并定义当前学期课程数与课程名#xff0c;并分别录入每位学生每门课程成绩#xff0c;系统显示输入每位学生每…参考链接 Java程序的输出 20(继承) 
一、项目名称 数组实现学生成绩统计 二、项目描述 1.项目简介 由用户输入学生人数与名字并定义当前学期课程数与课程名并分别录入每位学生每门课程成绩系统显示输入每位学生每门课程成绩并显示学生的总分与平均分。 2.程序要求 1)程序运行时显示欢迎信息并提示输入班级学生人数如图1。   
2)用户输入班级人数后系统提示用户输入本学期课程数如图2。  
3)输入学期课程数后系统提示用户定义每门课程名 如图3、图4、图5。  4)所有课程名都定义完成后系统提示输入学生姓名。如图6。 5)录入一个学生姓名后提示录入本学期每门课程的成绩。当一个学生所有课程录入完成后提示录入下一个学生姓名及本学期每门课程成绩。如图7如图8如图9。    6)所有学生姓名与对应的每个学生本学期每门课程成绩录入完成后系统显示打印输入录入成绩并统计输入每位学生的课程总分与平均分。如图10。 三、说明 本程序不涉及文件数据库操作仅利用java数组实现。  
代码实现  
package cn.jpi.demo; import java.util.Scanner; import org.junit.Test; public class StudentsScoreStatistics { 
//    定义全局变量 //    班级学生名字数组 static String[] studentName; 
//    学期课程名数组 static String[] courseName; 
//    学生成绩二维数组 static int[][] studentScore; 
//    学生总分 static int[] studentScoreSum; 
//    学生平均分 static double[] studentScoreAvg; //    定义Object二维数组来装矩形 static Object[][] table; //    声明Scanner对象 static Scanner sc  new Scanner(System.in); public static void main(String[] args) { 
//        1.欢迎使用 welcome(); 
//        2.输入班级人数课程数课程名以及每位同学的各门课的成绩 print(); 
//        3.打印结果 end(); } //    4.定义输出总结果方法 private static void end() { 
//        输出表头 System.out.print(学生\t); 
//        遍历课程名数组 for(String s:courseName) { System.out.print(s\t); } System.out.println(总分\t平均分); 
//        二维数组的遍历 for(int i  0;itable.length;i) { for(int j  0;jtable[i].length;j) { System.out.print(table[i][j]\t); } System.out.println(); } } //    2.定义输入班级人数课程数课程名以及录入每位同学的各门课的成绩方法 private static void print() { 
//        输入班级人数确定学生数组的长度 System.out.println(请输入班级学生人数); int i   sc.nextInt(); studentName  new String[i]; //        确定学生总分数组长度 studentScoreSum  new int[i]; //        确定学生平均分数组长度 studentScoreAvg  new double[i]; //        输入学生课程数确定课程数组的长度 System.out.println(请输入学期课程数); int j   sc.nextInt(); courseName  new String[j]; //        确定学生成绩数组长度 studentScore  new int[i][j]; //        确定矩阵大小 table  new Object[i][j3]; //        输入课程名字循环 for(int k  0;kcourseName.length;k) { System.out.println(请定义第(k1)门课的名字); courseName[k]  sc.next(); } 
//        输入学生的姓名并录入他的每门课的成绩循环嵌套 
//        声明总分变量 int sum  0; 
//        声明平均分变量 
//        double avg  0; for(int l  0;lstudentName.length;l) { System.out.println(请输入第(l1)个学生的姓名); studentName[l]  sc.next(); for(int m  0;mcourseName.length;m) { System.out.println(请输入studentName[l]同学courseName[m]的成绩); studentScore[l][m]  sc.nextInt(); sum  sum  studentScore[l][m]; 
//                avg  sum/courseName.length; } studentScoreSum[l]  sum; studentScoreAvg[l]  sum/courseName.length; 
//            sum归0重新计算 sum  0; 
//            System.out.println(sum.....avg); } 
//        为 表格填入数据 for(int n  0;nstudentName.length;n) { for(int o  0;ocourseName.length3;o) { if(o1  ocourseName.length) { table[n][o]  studentScore[n][o-1]; }else if(o0) { table[n][o]  studentName[n]; }else if(ocourseName.length1){ table[n][o]  studentScoreSum[n]; }else { table[n][o]  studentScoreAvg[n]; } } } } //    1.定义打印表头方法 private static void welcome() { System.out.println(欢迎使用简单不简约成绩统计系统^_^); } Test public void test() { } } 
} 代码就不细分了反正也是给我以后自己看的嘻嘻 主要讲讲做这题的过程中遇到的问题吧 我有在两个地方卡住  一个是在给table赋值的时候我原本想把赋值放在输入学生成绩的那个循环里面但是要么是索引越界异常要么是后面的值赋不上去为null值此时我就想到它循环的次数和我要给table赋值的长度是不一样的。 为解决这一问题我到外面单独写一个循环去给table赋值这个故事告诉我不该省的代码还是老老实实的写  另外一个是二维数组的问题我看到题目要求的结果我就很清楚这里是个二维数组我也是这么做的但是!我在前面定义的学生成绩的数组它是一维的而且我是在循环里面给他赋值也就是说我对一个学生的成绩赋值完成给下一个学生的成绩赋值它就会把第一个学生成绩的值给覆盖掉导致无论我输出的结果都与最后一个同学的成绩一样。 为解决这一问题我把学生成绩改为二维数组再将相应的地方改掉就OK了  在测的时候要把学生数课程数学生数课程数学生数课程数这几种情况都测一测因为有一些细节不注意它可能会存在索引不存在或者索引越界的问题。  
还有一个小作业就不写上来了很容易。  
最后面向对象面向君不负代码不负卿。各位加油