出错提示:
java.lang.NullPointerException
at dateType.<init>(DataTest.java:11)
at DataTest.main(DataTest.java:111)
Exception in thread "main" 代码如下:
class Date
{
int month;
int day;
int year;
}class dateType {
public Date a; //日期结构的数据成员
dateType(Date b){ //构造函数
a.month = b.month;
a.day = b.day;
a.year = b.year;
}
void Modify(int m,int d,int y){ //修改日期
a.month = m;
a.day = d;
a.year = y;
}
void Next(){ //明天
a.day++;
if(a.day>MonthEnd(a.month))
{
a.day = 1;
a.month++;
if(a.month>12)
{
a.month =1;
a.year++;
}
}
}
void Previous(){ //昨天
a.day--;
if(a.day<1)
{
a.month--;
if(a.month<1)
{
a.month=12;
a.year--;
}
a.day = MonthEnd(a.month);
}
}
int WeekDay()
{ //星期几
int n;
n = (a.year-1)*365;
n += (a.year -1)/4;
n -=(a.year-1)/100;
n+= (a.year -1)/400;
for(int i=1;i<a.month;i++)
n+=MonthEnd(i);
n=+a.day;
n%=7;
return n;
}
void Print() { //打印日期
System.out.println("年" + "月" +"日");
switch(WeekDay())
{
case 0:System.out.println("Sun");
case 1:System.out.println("Mon");
case 2:System.out.println("Tus");
case 3:System.out.println("wed");
case 4:System.out.println("Thu");
case 5:System.out.println("Fir");
case 6:System.out.println("sat");
}
}
protected boolean isLeapYear()
{ //保护成员函数判断是否闰年
return((a.year%4==0&&a.year%100!=0)|(a.year%400==0));
}
protected int MonthEnd(int m)
{ //某月的天数
switch(m)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;
case 4:case 6:case 9:case 11:return 30;
case 2:
if(isLeapYear())
return 29;
else
return 28;
}
return 0;
}
};
public class DataTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Date a = new Date();
a.day =21;
a.month = 8;
a.year = 2000;
dateType oneday = new dateType(a);
oneday.Print();
oneday.Next() ;
oneday.Print();
oneday.Modify(8,21,2006);
oneday.Print();
oneday.Previous();
oneday.Print(); }}
java.lang.NullPointerException
at dateType.<init>(DataTest.java:11)
at DataTest.main(DataTest.java:111)
Exception in thread "main" 代码如下:
class Date
{
int month;
int day;
int year;
}class dateType {
public Date a; //日期结构的数据成员
dateType(Date b){ //构造函数
a.month = b.month;
a.day = b.day;
a.year = b.year;
}
void Modify(int m,int d,int y){ //修改日期
a.month = m;
a.day = d;
a.year = y;
}
void Next(){ //明天
a.day++;
if(a.day>MonthEnd(a.month))
{
a.day = 1;
a.month++;
if(a.month>12)
{
a.month =1;
a.year++;
}
}
}
void Previous(){ //昨天
a.day--;
if(a.day<1)
{
a.month--;
if(a.month<1)
{
a.month=12;
a.year--;
}
a.day = MonthEnd(a.month);
}
}
int WeekDay()
{ //星期几
int n;
n = (a.year-1)*365;
n += (a.year -1)/4;
n -=(a.year-1)/100;
n+= (a.year -1)/400;
for(int i=1;i<a.month;i++)
n+=MonthEnd(i);
n=+a.day;
n%=7;
return n;
}
void Print() { //打印日期
System.out.println("年" + "月" +"日");
switch(WeekDay())
{
case 0:System.out.println("Sun");
case 1:System.out.println("Mon");
case 2:System.out.println("Tus");
case 3:System.out.println("wed");
case 4:System.out.println("Thu");
case 5:System.out.println("Fir");
case 6:System.out.println("sat");
}
}
protected boolean isLeapYear()
{ //保护成员函数判断是否闰年
return((a.year%4==0&&a.year%100!=0)|(a.year%400==0));
}
protected int MonthEnd(int m)
{ //某月的天数
switch(m)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;
case 4:case 6:case 9:case 11:return 30;
case 2:
if(isLeapYear())
return 29;
else
return 28;
}
return 0;
}
};
public class DataTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Date a = new Date();
a.day =21;
a.month = 8;
a.year = 2000;
dateType oneday = new dateType(a);
oneday.Print();
oneday.Next() ;
oneday.Print();
oneday.Modify(8,21,2006);
oneday.Print();
oneday.Previous();
oneday.Print(); }}
public Date a = new Date(); //日期结构的数据成员
{
public int month;
public int day;
public int year;
}加public试试看
其实最好用private 然后写get set方法
int month; int day; int year;
}class dateType {
public Date a = new Date(); // 日期结构的数据成员 public dateType(Date b) { // 构造函数
a.month = b.month;
a.day = b.day;
a.year = b.year;
} void Modify(int m, int d, int y) { // 修改日期
a.month = m;
a.day = d;
a.year = y;
} void Next() { // 明天
a.day++;
if (a.day > MonthEnd(a.month)) {
a.day = 1;
a.month++;
if (a.month > 12) {
a.month = 1;
a.year++;
}
} } void Previous() { // 昨天
a.day--;
if (a.day < 1) {
a.month--;
if (a.month < 1) {
a.month = 12;
a.year--;
}
a.day = MonthEnd(a.month);
} } int WeekDay() { // 星期几
int n;
n = (a.year - 1) * 365;
n += (a.year - 1) / 4;
n -= (a.year - 1) / 100;
n += (a.year - 1) / 400;
for (int i = 1; i < a.month; i++) n += MonthEnd(i);
n = +a.day;
n %= 7;
return n;
} void Print() { // 打印日期
System.out.println("年" + "月" + "日");
switch (WeekDay()) {
case 0:
System.out.println("Sun");
case 1:
System.out.println("Mon");
case 2:
System.out.println("Tus");
case 3:
System.out.println("wed");
case 4:
System.out.println("Thu");
case 5:
System.out.println("Fir");
case 6:
System.out.println("sat");
}
} protected boolean isLeapYear() { // 保护成员函数判断是否闰年
return ((a.year % 4 == 0 && a.year % 100 != 0) | (a.year % 400 == 0));
} protected int MonthEnd(int m) { // 某月的天数
switch (m) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
if (isLeapYear())
return 29;
else
return 28; }
return 0;
}
}public class T01 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Date a = new Date();
a.day = 21;
a.month = 8;
a.year = 2000; dateType oneday = new dateType(a); oneday.Print();
oneday.Next();
oneday.Print();
oneday.Modify(8, 21, 2006);
oneday.Print();
oneday.Previous();
oneday.Print(); }}
这导致了空指针异常
另外一问题是:dateType这个类的定义后面还有“;”号。这个也是一个小错误。:)