- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
另外,我的任务是使用 GregorianCalendar 类输入日期
学生类(class)内部:
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();
}
}
错误:
线程“main”中出现异常 java.lang.NullPointerException
at oop2/lab5.Student2.<init>(Greg2.java:23)
at oop2/lab5.Greg2.main(Greg2.java:68)
最佳答案
带有大写
date = Date;
D
的
Date
是类的名称,而不是变量的名称。相反,您应该将传递的参数名称定义为 date
而不是 Date
。此行变为 date = date ;
。编译器可以区分参数和成员变量。如果您想让读者更清楚,您可以说 this.date = date ;
。
但这对于变量来说是一个糟糕的名称。因为确实有两个与 Java 捆绑在一起的名为 Date
的类,它们都与 GregorianCalendar
相关,所以我建议避免使用 date
作为变量名GregorianCalendar
对象 – 太困惑了。
GregorianCalendar
是一个糟糕的类。它在几年前就被 java.time 类完全取代了。具体来说,ZonedDateTime
。这两个类都代表通过某个特定区域(时区)的挂钟时间看到的时刻。
但是,这两个类都不适合您的目的。您只需要一个日期,没有时间,也没有时区上下文或相对于 UTC 的偏移量。因此 LocalDate
适合您的需求。
LocalDate ld = LocalDate.of( year , month , day ) ;
int years = date.get(Calendar.YEAR);
String year = Integer.toString(years);
String Studno = Integer.toString(80);
…
这些行是 float 的,而不是放置在方法内部。它们应该被放在你的方法的构造函数中。
为什么有一个名为Greg2
的类?您指的是特定的学生吗?如果是这样,Greg 应该由分配给 Student
类的实例的值来表示。
名称末尾的所有 2
字符是怎么回事?命名很重要;弄清楚这一点,你就已经成功一半了。
所以大部分代码都是一团糟。 从头开始重试。查找其他代码示例,例如 Stack Overflow 上的 Oracle Tutorial 中的代码示例。 ,或在您类(class)的课本中的家庭作业中。
了解关注点分离。一个类(class)应该只代表一名学生。另一个类应该代表您的应用程序,并保存 main
方法。使用 Collection
将新实例化的 Student
类收集到名册中,如果您还有其他与名册相关的职责,则可能会创建一个类 Roster
。
最后,迈出一小步。一次添加一件小事,看看它是否正常运行。使用 System.out.println 验证值。不要尝试一次编写所有代码。
关于java - "How to pass GregorianCalendar class object to a different class method ?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57734706/
我是一名优秀的程序员,十分优秀!