大家帮我看个JAVA小程序
我的这个程序不能运行,它说是不能从静态上下文中调用非静态变量publicclassTestArgs{classDate{intyear;intmonth;intday;D...
我的这个程序不能运行,它说是不能从静态上下文中调用非静态变量
public class TestArgs{
class Date{
int year;int month;int day;
Date(int y,int m ,int d )
{
year=y;month=m;day=d; }
}
public static void main(String[]args ){
Date days[];
days=new Date[5];
days[0]=new Date(2008,11,3);
days[1]=new Date(2008,11,4);
days[2]= new Date(2008,11,5);
days[3]= new Date(2008,11,6);
days[4]= new Date(2008,11,7);
for(int i=1;i<=5;i++)
System.out.println(days[i]);
}
}
谢大家的回答,但是我在“class Date”前加了“static”可是还是不能运行,不知道为什么 展开
public class TestArgs{
class Date{
int year;int month;int day;
Date(int y,int m ,int d )
{
year=y;month=m;day=d; }
}
public static void main(String[]args ){
Date days[];
days=new Date[5];
days[0]=new Date(2008,11,3);
days[1]=new Date(2008,11,4);
days[2]= new Date(2008,11,5);
days[3]= new Date(2008,11,6);
days[4]= new Date(2008,11,7);
for(int i=1;i<=5;i++)
System.out.println(days[i]);
}
}
谢大家的回答,但是我在“class Date”前加了“static”可是还是不能运行,不知道为什么 展开
5个回答
展开全部
要注意的有4点:
1.Date是Java本身有的类,Date属于关键字,一般不要拿来命名自己写的类。
2.Date类须声明为static。
3.Date类中没有toString()方法,这种情况下直接用println(day[i])是打不出你想要的结果的。
4.像Date类没有后括号,for循环下标应从0开始到length-1,这种基本错误要减少。
我把代码改了一下,这样就可以了。
public class TestArgs{
static class date{
int year;int month;int day;
date(int y,int m ,int d ){
year=y;
month=m;
day=d;
}
public String toString(){
return "year: " + this.year + " month: " + this.month + " day: " + this.day;
}
}
public static void main(String[]args ){
date days[];
days=new date[5];
days[0]=new date(2008,11,3);
days[1]=new date(2008,11,4);
days[2]= new date(2008,11,5);
days[3]= new date(2008,11,6);
days[4]= new date(2008,11,7);
for(int i=0;i<5;i++)
System.out.println(days[i]);
}
}
1.Date是Java本身有的类,Date属于关键字,一般不要拿来命名自己写的类。
2.Date类须声明为static。
3.Date类中没有toString()方法,这种情况下直接用println(day[i])是打不出你想要的结果的。
4.像Date类没有后括号,for循环下标应从0开始到length-1,这种基本错误要减少。
我把代码改了一下,这样就可以了。
public class TestArgs{
static class date{
int year;int month;int day;
date(int y,int m ,int d ){
year=y;
month=m;
day=d;
}
public String toString(){
return "year: " + this.year + " month: " + this.month + " day: " + this.day;
}
}
public static void main(String[]args ){
date days[];
days=new date[5];
days[0]=new date(2008,11,3);
days[1]=new date(2008,11,4);
days[2]= new date(2008,11,5);
days[3]= new date(2008,11,6);
days[4]= new date(2008,11,7);
for(int i=0;i<5;i++)
System.out.println(days[i]);
}
}
展开全部
声明int 类型变量貌似要赋初值啊,还有,有个TestArgs类,干嘛再写个Date类,直接调就可以了,就是调用的时候也错了,貌似是new TestArgs().Date(arg1,arg2,arg3);或者调这个Date.Date(arg1,arg2,arg3);主函数测试类名调方法。。。说不对望见谅。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class TestArgs{
static class Date{
int year;int month;int day;
Date(int y,int m ,int d )
{
year=y;month=m;day=d; }
}
public static void main(String[]args ){
Date days[];
days=new Date[5];
days[0]=new Date(2008,11,3);
days[1]=new Date(2008,11,4);
days[2]= new Date(2008,11,5);
days[3]= new Date(2008,11,6);
days[4]= new Date(2008,11,7);
for(int i=0;i<5;i++)
System.out.println(days[i]);
}
}
Date类定为静态类,不然你就要先实例化TestArgs,因为Date是TestArgs的内部类,
static class Date{
int year;int month;int day;
Date(int y,int m ,int d )
{
year=y;month=m;day=d; }
}
public static void main(String[]args ){
Date days[];
days=new Date[5];
days[0]=new Date(2008,11,3);
days[1]=new Date(2008,11,4);
days[2]= new Date(2008,11,5);
days[3]= new Date(2008,11,6);
days[4]= new Date(2008,11,7);
for(int i=0;i<5;i++)
System.out.println(days[i]);
}
}
Date类定为静态类,不然你就要先实例化TestArgs,因为Date是TestArgs的内部类,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for循环错了,而且Date没有提供toString方法,输出的只会是hash地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主,注意2点,
你的Date是一个构造函数,还是一个方法?
要是构造函数,写上修饰符,要是一个方法,在main中调用的时候必须弄成static的,要不只能通过对象来调用!不能直接调用!
看楼主的例子应该是Date是一个构造函数!
你的Date是一个构造函数,还是一个方法?
要是构造函数,写上修饰符,要是一个方法,在main中调用的时候必须弄成static的,要不只能通过对象来调用!不能直接调用!
看楼主的例子应该是Date是一个构造函数!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询