题目:
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、创建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;
}我想问为什么会出现空指针的异常..还有怎么解决这个问题呢?
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
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;
}
}问题可能的原因,我在代码中注释了!