Exception in thread "main" java.lang.NullPointerException怎么解决???

kclock 2013-11-25 03:48:28
class Student{
Subject a;
Subject b;
Subject c;
class Subject{
String a="JAVA 考察";
String b="SQL 考试";
String c="J2EE 考察";
int Atten=0;
int Assign=0;
int Lab=0;
int Fin=0;
public Subject() {
// TODO Auto-generated constructor stub
Atten=0;
Assign=0;
Lab=0;
Fin=0;
}

}
void setStudent(int a1,int a2,int a3,int a4,int b1,int b2,int b3,int b4,int c1,int c2,int c3,int c4){
a.Atten=a1;
a.Assign=a2;
a.Lab=a3;
a.Fin=a4;
b.Atten=b1;
b.Assign=b2;
b.Lab=b3;
b.Fin=b4;
c.Atten=c1;
c.Assign=c2;
c.Lab=c3;
c.Fin=c4;
}
static class SubjectType{
double attenRatio;
int i;
static final double assignRatio=0.1;
static final double labRatio=0.1;
double finalRatio;
SubjectType(int k)
{i=k;}
void setRatio(){
if(i==1)
{
attenRatio=0.1;
finalRatio=0.7;
}
if(i==2)
{
attenRatio=0.2;
finalRatio=0.6;
}
}
}
void printInfo(){

class CalcScore{
SubjectType java=new SubjectType(2);
SubjectType SQL=new SubjectType(1);
SubjectType JE22=new SubjectType(2);
double a1=a.Atten*java.attenRatio+a.Assign*java.assignRatio+a.Lab*java.labRatio+a.Fin*java.finalRatio;
double b1=b.Atten*SQL.attenRatio+b.Assign*SQL.assignRatio+b.Lab*SQL.labRatio+b.Fin*SQL.finalRatio;
double c1=c.Atten*JE22.attenRatio+c.Assign*JE22.assignRatio+a.Lab*JE22.labRatio+c.Fin*JE22.finalRatio;
}

CalcScore cal=null;
System.out.println("课程 性质 出勤 作业 实验 期末 总分");
System.out.println("====================================");
System.out.println(a.a+" "+a.Atten+" "+a.Assign+" "+a.Lab+" "+a.Fin+cal.a1);
System.out.println(b.b+" "+b.Atten+" "+b.Assign+" "+b.Lab+" "+b.Fin);
System.out.println(c.c+" "+c.Atten+" "+c.Assign+" "+c.Lab+" "+c.Fin);
System.out.println("************************************");
}
}
public class t3 {
static Student S1 = null;
public static void main(String[]args){
S1.setStudent(90,85,75,80,80,90,82,75,78,70,65,70);
}
}


完全想不到要怎么改才好,求帮忙!
...全文
219 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kclock 2013-11-25
  • 打赏
  • 举报
回复
恩恩~~~谢谢谢!!!我成功啦~~~一直卡在这里(哭,其实程序还没写完~接下来就轻松加愉快了~
少羽 2013-11-25
  • 打赏
  • 举报
回复
楼主的第2,3,4行 Subject a; Subject b; Subject c; 改成 Subject a = new Subject(); Subject b= new Subject(); Subject c= new Subject(); 一下代码中的第 2 行 public class t3 { static Student S1 = null; public static void main(String[]args){ S1.setStudent(90,85,75,80,80,90,82,75,78,70,65,70); } } 改为Student S1 = new Student(); 就不会报错了, 但是仅仅只是不报错能运行而已,但是楼主想要干什么我没看明白,程序运行没有任何结果
kclock 2013-11-25
  • 打赏
  • 举报
回复
本人是菜鸟,二楼的前辈我不知道要怎么初始化才对.?..求解惑
爪哇三郎 2013-11-25
  • 打赏
  • 举报
回复
实在找不到问题出在哪,你可以在这个方法任意一行进行bug单步跟踪
少羽 2013-11-25
  • 打赏
  • 举报
回复
这么简单的问题也需要问? public class t3 { static Student S1 = null; public static void main(String[]args){ S1.setStudent(90,85,75,80,80,90,82,75,78,70,65,70); } } 楼主的S1变量是=null的,还没有初始化,也就是空的,但是你却在下面调用了S1变量的方法,当然会报空指针啦,就好像楼主拿了一个空杯子在喝水是一个道理。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧