【发布时间】:2019-08-31 02:09:32
【问题描述】:
- 我想使用一种能够创建学生记录的方法 从用户那里获取有关学生详细信息的输入。我的班级学生应该 包括以下领域:短学期, 全名, 注册号等 . 学生的注册号 = 年份和学号的串联。 例如,学生加入的年份 = 2023, 学生号= 80, 所以注册号=2380
另外,我的任务是使用 GregorianCalendar 类输入日期
学生课堂内部:
import java.util.*;
class Student2{
String fullname;
GregorianCalendar date;
short semester;
Student2()
{
}
Student2(String name,short sem, GregorianCalendar Date)
{
fullname = name;
semester=sem;
date = Date;
}
int years = date.get(Calendar.YEAR);
String year = Integer.toString(years);
String Studno = Integer.toString(80);
String y1= year.substring(0,3);
String Reg = y1.concat(Studno);
int reg = Integer.parseInt(Reg);
void Studarry()
{
int n=5,i;
Student2[] stuarry = new Student2[10];
for(i=0;i<n;i++)
{
System.out.println("Enter name sem year month day gpa cgpa\n");
Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
short sem2 = sc.nextShort();
int year2 = sc.nextInt();
int month2 = sc.nextInt();
int day2=sc.nextInt()
GregorianCalendar gc2 = new GregorianCalendar(year2,month2,day2);
stuarry[i] = new Student2(name,sem2,gc2);
}
}
void Display()
{
}
}
内部驱动程序类:
public class Greg2{
public static void main(String[] args)
{
Student2 starr = new Student2();
starr.Studarry();
}
}
错误:
-
线程“主”java.lang.NullPointerException 中的异常
at oop2/lab5.Student2.<init>(Greg2.java:23) at oop2/lab5.Greg2.main(Greg2.java:68)
【问题讨论】:
-
您正在尝试在
date初始化之前初始化years。这意味着date仍然为 null,并且在其上调用方法将导致 NullPointerException。似乎您在Student2构造函数和Studarry方法之间的代码应该移动到Student2构造函数中,因为它们目前是在创建Student2的实例后立即执行的。您还必须实际组合这些变量并将其保存到fullname。 -
如果不明白为什么代码不能按原样运行,可以参考this post。
-
我的任务是使用 GregorianCalendar 类输入日期 提出如此可怕要求的老师永远不会离开吗?
GregorianCalendar类设计不佳且过时已久。没有人应该使用它。教师最少。
标签: java class constructor nullpointerexception gregorian-calendar