花溪★流年 2021-09-19 21:40 采纳率: 61.5%
浏览 41
已结题

希望有人解答这个Java问题

代码要求是线性表输入学生成绩信息

import java.util.Scanner;
class Student {
    String[] Name;
    char[] Sex;
    float[] Hmath;
    float[] Lmath;
    float[] C;
    float[] Object;
    int len = C.length;
    public void Creat() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入录入学生信息的数量:");
        int m = sc.nextInt();
        Name = new String[m];
        Sex = new char[m];
        Hmath = new float[m];
        Lmath = new float[m];
        C = new float[m];
        Object = new float[m];
        for(int i=0;i<m;i++)
        {
             System.out.println("请输入第"+i+"组数据");
             Name[i] = sc.nextLine();
             Sex[i] = sc.next().charAt(0);
             Hmath[i] = sc.nextFloat();
             Lmath[i] = sc.nextFloat();
             C[i] = sc.nextFloat();
             Object[i] = sc.nextFloat();
         }
    }
    public void Print() {
        for(int i=0;i<len;i++)
        {
             System.out.println("第"+i+"组");
             System.out.println(Name[i]+",");
             System.out.println(Sex[i]+",");
             System.out.println(Hmath[i]+",");
             System.out.println(Lmath[i]+",");
             System.out.println(C[i]+",");
             System.out.println(Object[i]+",");
         }
    }
    public void Put() {
        float Sum1=0,Ave1=0;
        float Sum2=0,Ave2=0;
        float Sum3=0,Ave3=0;
        float Sum4=0,Ave4=0;
        for(int i=0;i<len;i++)
             Sum1+=Hmath[i];
        for(int i=0;i<len;i++)
             Sum2+=Lmath[i];
        for(int i=0;i<len;i++)
             Sum3+=C[i];
        for(int i=0;i<len;i++)
             Sum4+=Object[i];
        Ave1=Sum1/len;
        Ave2=Sum2/len;
        Ave3=Sum3/len;
        Ave4=Sum4/len;
        System.out.println("高等数学平均成绩为"+Ave1);
        System.out.println("线性代数平均成绩为"+Ave2);
        System.out.println("C语言平均成绩为"+Ave3);
        System.out.println("面对对象平均成绩为"+Ave4);
    }
}
public class TestStudent {
    public static void main(String[] args) {
        Student Stu = new Student();
        Stu.Creat();
        Stu.Put();
        Stu.Print();
    }
}
...
这个代码不知道为什么运行出现下面的错误
```bash
Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "this.C" is null
        at Student.<init>(Student.java:9)
        at TestStudent.main(TestStudent.java:3)
  • 写回答

3条回答 默认 最新

  • CSDN专家-sinJack 2021-09-19 21:42
    关注

    int len = C.length;
    这行代码有异常。

    
    import java.util.Scanner;
    class Student {
        String[] Name;
        char[] Sex;
        float[] Hmath;
        float[] Lmath;
        float[] C;
        float[] Object;
        int len =0;
        public void Creat() {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入录入学生信息的数量:");
            int m = sc.nextInt();
             len=m;
            Name = new String[m];
            Sex = new char[m];
            Hmath = new float[m];
            Lmath = new float[m];
            C = new float[m];
            Object = new float[m];
            for(int i=0;i<m;i++)
            {
                 System.out.println("请输入第"+i+"组数据");
                 Name[i] = sc.nextLine();
                 Sex[i] = sc.next().charAt(0);
                 Hmath[i] = sc.nextFloat();
                 Lmath[i] = sc.nextFloat();
                 C[i] = sc.nextFloat();
                 Object[i] = sc.nextFloat();
             }
        }
        public void Print() {
            for(int i=0;i<len;i++)
            {
                 System.out.println("第"+i+"组");
                 System.out.println(Name[i]+",");
                 System.out.println(Sex[i]+",");
                 System.out.println(Hmath[i]+",");
                 System.out.println(Lmath[i]+",");
                 System.out.println(C[i]+",");
                 System.out.println(Object[i]+",");
             }
        }
        public void Put() {
            float Sum1=0,Ave1=0;
            float Sum2=0,Ave2=0;
            float Sum3=0,Ave3=0;
            float Sum4=0,Ave4=0;
            for(int i=0;i<len;i++)
                 Sum1+=Hmath[i];
            for(int i=0;i<len;i++)
                 Sum2+=Lmath[i];
            for(int i=0;i<len;i++)
                 Sum3+=C[i];
            for(int i=0;i<len;i++)
                 Sum4+=Object[i];
            Ave1=Sum1/len;
            Ave2=Sum2/len;
            Ave3=Sum3/len;
            Ave4=Sum4/len;
            System.out.println("高等数学平均成绩为"+Ave1);
            System.out.println("线性代数平均成绩为"+Ave2);
            System.out.println("C语言平均成绩为"+Ave3);
            System.out.println("面对对象平均成绩为"+Ave4);
        }
    }
    public class TestStudent {
        public static void main(String[] args) {
            Student Stu = new Student();
            Stu.Creat();
            Stu.Put();
            Stu.Print();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月27日
  • 已采纳回答 9月19日
  • 创建了问题 9月19日

悬赏问题

  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败