我的这段java代码为什么会报空指针?

这是学生类

package com.lianxi.com;


public class Student{

private int on;   //学生编号

private String name;   //学生名字

private int age;   //年龄

private double java;  //java成绩

private double C;   //c语言成绩

private double HTML;   //html成绩

private double SQL;   //sql 成绩

private double sum;   //总分

private double avg;   //平均分


public int getOn() {

return on;

}

public void setOn(int on) {

this.on = on;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public double getJava() {

return java;

}

public void setJava(double java) {

this.java = java;

}

public double getC() {

return C;

}

public void setC(double c) {

this.C = c;

}

public double getHTML() {

return HTML;

}

public void setHTML(double hTML) {

this.HTML = hTML;

}

public double getSQL() {

return SQL;

}

public void setSQL(double sQL) {

this.SQL = sQL;

}

public double getSum() {

return sum = this.java+this.C+this.HTML+this.SQL;   //总分

}

public double getAvg() {

return avg = this.sum/4 ;  //平均分

}

String msg;

public String toString() {   //改写toString方法

msg = this.on+"\t"+this.name+"\t"+this.age+"\t"+this.java+"\t"+this.C+"\t"+this.HTML+"\t"

+this.SQL+"\t"+this.sum+"\t"+this.avg;

return msg;

}

}

这是方法类:===========================================华丽的分割线

package com.lianxi.com;


public class Admin {

String msg = "编号"+"\t"+"姓名"+"\t"+"年龄"+"\t"+"java"+

"\t"+"C#"+"\t"+"HTML"+"\t"+"SQL"+"\t"+"总分"+"\t"+"平均分";


public void print(Student[] stu) {  //打印的方法 传进学生数组 


System. out.println( msg); 

for(int i=0;i<stu.length;i++) {

if(stu[i] != null) {  //判断学生数组非空的 然后打印出来

System.out.println(stu[i]);

}

}

}

public void ten(String name,int age,Student[] stu) {  

//重点了 就是这个方法报错了 在主函数中 调用了这个方法 传进名字 年龄 学生数组

if(this.setIndex(stu) == 99999) { //setIndex这个方法在下面

System.out.println("你已经输入完了");

}else {}

stu[this.setIndex(stu)].setName(name); //给 返回的为空的数组下标 放置名字

stu[this.setIndex(stu)].setAge(age); //放置年龄

stu[this.setIndex(stu)].setOn(this.setIndex(stu)); //放置编号

this.print(stu);     //打印

}

public int setIndex(Student[] stu) {//返回为空的下标

for(int i = 0; i<stu.length;i++) {

if(stu[i] == null) {

return i;

}

}

return 99999;

}

}

割==============================================这是执行类:

package com.lianxi.com;


import java.util.Scanner;


public class Test{

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

System.out.println("---请输入学生人数---");

int num = in.nextInt();

while(true) {

System.out.println("---你要执行的功能---");

System.out.println("10:添加一个学生");

System.out.println("11:查找一个学生");

System.out.println("12:根据学生编号更新学生的基本信息");

System.out.println("13:根据学生编号删除学生");

System.out.println("14:根据编号输入学生的各门成绩");

System.out.println("15:根据某一门成绩进行排序");

System.out.println("16:根据总分进行排序");

System.out.println("99:退出系统");

int a = in.nextInt(); //你要执行的操作 对应的编号

Student[] jjyynew Student[num]; //学生数组

Admin adminnew Admin(); 

switch(a) {

case 10: //10为添加一个学生

System.out.println("请输入学生的姓名");

String name = in.next();

System.out.println("请输入学生的年龄");

int age = in.nextInt();

admin.ten(nameagejjyy); //给传进名字 年龄 和学生数组

//admin.print(jjyy);

break;


default:

break;

}

}

}

}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值