老师帮忙看看

老师帮忙看看

package com.imooc.zy;

import java.util.Scanner;

//成绩类
public class score {
   private float[][] grade;
   private int number;
   public score(){

   }
   public score(int number) {
       this.number = number;
       grade = new float[number][2];
   }
   //get/set
   public float[][] getGrade() {
       return grade;
   }

   public void setGrade(float[][] grade) {
       this.grade = grade;
   }

   public int getNumber() {
       return number;
   }

   public void setNumber(int number) {
       this.number = number;
   }
   //2、定义一个初始化语文数学成绩的方法,数组元素由键盘输入。
   public float[][] initScore() {
       Scanner sn = new Scanner(System.in);
       for (int i = 0; i < grade.length; i++) {
           for (int j = 0; j < grade[i].length; j++) {
               if (j == 0){
                   System.out.println("请输入第" + (i + 1) + "个学生的语文成绩:");
                   grade[i][j] = sn.nextFloat();
               }else if (j == 1){
                   System.out.println("请输入第" + (i + 1) + "个学生的数学成绩:");
                   grade[i][j] = sn.nextFloat();
               }
           }
       }
       return new float[this.number][];
   }
   //3、定义一个求平均成绩的方法:
   public void average() {
       float f = 0,w = 0;
       int o = 0;
       for (int i = 0; i < grade.length; i++) {
           for (int j = 0; j < grade[i].length; j++) {
               if (j == 0){
                   f += grade[i][j];
               }else if (j == 1){
                   w += grade[i][j];
               }
           }
           o++;
       }
       float d = f / o;
       float c = w / o;
       System.out.println("语文成绩平均分:" + d);
       System.out.println("数学成绩平均分:" + c);
   }
   //4、定义一个统计成绩大于85分的人数的方法:
   public void count() {
       int f = 0,w = 0;
       for (int i = 0; i < grade.length; i++) {
           for (int j = 0; j < grade[i].length; j++) {
               if (j == 0){
                   if (grade[i][j] >= 85){
                       f++;
                   }
               }else if (j == 1){
                   if (grade[i][j] >= 85){
                       w++;
                   }
               }
           }
       }
       System.out.println("语文成绩大于85有:" + f + "人!");
       System.out.println("数学成绩大于85有:" + w + "人!");
   }
   //6、打印输出所有成绩的方法:
   public void displayAllScore() {
       for (int i = 0; i < grade.length; i++) {
           for (int j = 0; j < grade[i].length; j++) {
               if (j == 0){
                   System.out.println("语文:" + grade[i][j]);
               }else if (j == 1) {
                   System.out.println("数学:" + grade[i][j]);
               }
           }
       }
   }
}
package com.imooc.zy;

import java.util.Scanner;

public class means {
   //1、定义一个显示菜单的方法:
   public void displayMenu() {
       System.out.println("*************************************");
       System.out.println("    1--初始化数学成绩");
       System.out.println("    2--求成绩的平均值");
       System.out.println("    3--统计成绩大于85分的人数");
       System.out.println("    4--修改指定位置处的成绩");
       System.out.println("    5--打印输出所有成绩");
       System.out.println("    0--推出");
       System.out.println("*************************************");
   }

   //7、在主方法中,使用case语句完成主要程序逻辑,当输入对应的数字时,调用对应的操作。
   // 注意:
   // 1、当要求输入数字,而输出非数字时,要给出错误提示。
   //2、当输入的数字与case语句不匹配时,给出错误提示。
   public void test() {
       while (true) {
           Scanner sn = new Scanner(System.in);
           score se = new score();
           means me = new means();
           me.displayMenu();
           int tep1, tep2, tep3;
           System.out.println("请输入对应数字进行操作:");
           tep1 = sn.nextInt();
           if (tep1 == 0) {
               break;
           } else {
               switch (tep1) {
                   case 1:
                       System.out.println("初始化数学成绩:");
                       System.out.println("请输入学生个数:");
                       tep2 = sn.nextInt();
                       score sw = new score(tep2);
                       sw.initScore();
                       break;
                   case 2:
                       System.out.println("求成绩的平均值:");
                       se.average();
                       break;
                   case 3:
                       System.out.println("统计成绩大于85分的人数:");
                       se.count();
                       break;
                   case 4:
                       System.out.println("修改指定位置处的成绩:");
                       break;
                   case 5:
                       System.out.println("打印输出所有成绩:");
                       se.displayAllScore();
                       break;
                   default:
                       System.out.println("该数字没有对应操作!");
               }
           }
       }
   }

   public static void main(String[] args) {
       score sw = new score();
       means me = new means();
       me.test();
       sw.average();
   }
}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕柯南 2020-02-09 11:39:42

同学你好!

你是否在循环中又new 了se呢,应该去掉,比如:

http://img1.sycdn.imooc.com//climg/5e3f7ee809d40b8a06550429.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

好帮手慕小脸 2020-02-08 13:55:17

同学你好,代码中有如下问题:

    1、 类名首字母应该大写。如score应改为Score;

    2、尚未输入成绩之前,求成绩平均值,修改成绩,统计大于85分人数,打印输出成绩时,会报空指针异常运行效果如下:

http://img1.sycdn.imooc.com//climg/5e3e4c04092004d006140242.jpg

修改建议:

    建议同学在调用方法前,先判断一下要操作的数组是否为null,如果不  为null再进行下一步的操作,如果为null,可以提示用户请先插入数据。

http://img1.sycdn.imooc.com//climg/5e3e4c620966d98906050754.jpg

   3、当初始化数组后,执行其他操作会提示未初始化。建议同学将Score对象定义一个,不要重复定义。具体修改如下:

http://img1.sycdn.imooc.com//climg/5e3e4d19098fe2c206610460.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

    

  • 提问者 夏蔚海 #1
    老师,为什么我这无法赋值进去呢
    2020-02-08 20:52:21
  • 提问者 夏蔚海 #2
    是按照你所说的修改的,但是其他相关功能没有赋值进去
    2020-02-08 20:53:13
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师