题目:
1、创建Student类描述学生,设置以下属性 a) String name 学生姓名 b) int[] score=new int[3]三门课程成绩2、创建Manager类管理学员成绩,将涉及功能以方法划分 a) public Student[]input(Student
[]stus); 学生成绩录入方法,参数stus为待录入信息学生数组为了实现这个功能,我的代码如下(Manager中的代码):
public Student[] input(Student[] stus) { System.out.print("输入学生人数:");
Scanner input = new Scanner(System.in);
int count = input.nextInt();
for (int j = 0; j < count; j++) {
System.out.print("请输入第" + (j + 1) + "名学生姓名:");
Scanner input2 = new Scanner(System.in);
String name = input2.next();
stus[j].setName(name);         //这边会出现空指针异常
System.out.println("请输入三门功课的成绩");
for (int i = 0; i <= stus.length; i++) {
Scanner input3 = new Scanner(System.in);
int score = input3.nextInt();
stus[j].score[i] = score;
}
}
return stus;
}我想问为什么会出现空指针的异常..还有怎么解决这个问题呢?

解决方案 »

  1.   

    int count = input.nextInt();
    for (int j = 0; j < count; j++) {//这个count是你上一句输入进来的,不是学生数组的长度,如果数组的个数小于你输入的count,那j循环到大于数组个长度的数时就没有stus[j],在对它操作就会空指针
    System.out.print("请输入第" + (j + 1) + "名学生姓名:");
    Scanner input2 = new Scanner(System.in);
    String name = input2.next();
    stus[j].setName(name); //这里的就空指针了,因为j大于了数组的长度,数组中没有stus[j]今天这么问这道题的这么多
    逻辑明显不对,重做吧。上一个也是这道题,逻辑我都没仔细看
    人家给100呢,你才给20
      

  2.   


    package app02a;public class Student {
    private String name;
    private int[] score;

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public int[] getScore() {
    return score;
    }

    public void setScore(int[] score) {
    this.score = score;
    }
    }
    package app02a;import java.util.Scanner;public class Manager {
    public static void main(String[] args) {
    Student[] students = input();
    }

    public static Student[] input() {
    System.out.print("输入学生人数:");
    Scanner input = new Scanner(System.in);
    int count = input.nextInt();
    Student[] stus = new Student[count];
    for (int j = 0; j < count; j++) {
    //数组的元素是对象,所以每个元素都要初始化,上面只是定义两个一个数组,并没有初始化每个元素
    stus[j] = new Student();
    System.out.print("请输入第" + (j + 1) + "名学生姓名:");
    String name = input.next();
    stus[j].setName(name); 
    System.out.println("请输入三门功课的成绩");
    int[] score = new int[3];
    for (int i = 0; i <= stus.length; i++) {
    score[i] = input.nextInt();
    }
    stus[j].setScore(score);
    }
    return stus;
    }
    }问题可能的原因,我在代码中注释了!