有一个不知道哪里错的java程序 请高手们看下 老是提示说:无法从静态上下文中引用非静态变量。很郁闷

publicclassTestBubble{publicstaticvoidmain(String[]args){Date[]days=newDate[5];days[0... public class TestBubble
{
public static void main(String[] args)
{ Date[] days = new Date[5];
days[0] = new Date(2008, 01, 02);//老是这点报错
days[1] = new Date(2007, 02, 03);
days[2] = new Date(2005, 03, 04);
days[3] = new Date(2006, 04, 05);
days[4] = new Date(2007, 05, 06);
Bubblesort(days);
for(int i=0;i<days.length;i++)
{
System.out.println(days[i]);
}
}

public static Date[] Bubblesort(Date[] a)
{int len = a.length;
for(int i=len-1;i>=1;i--)
{for(int j=0;j<i-1;j++)
{if(a[j].compare(a[j+1])>0)
{
Date temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
return a;
}

class Date
{
int year,month,day;
Date(int y,int m,int d)
{
year=y;month=m;day=d;
}

public int compare(Date date)
{
return year>date.year? 1
:year<date.year? -1
:month>date.month? 1
:month<date.month? -1
:day>date.day? 1
:day<date.day? -1 : 0 ;

}
public String toString()
{
return "Year:Month:Day -- " + year + "-" + month + "-" + day;
}
}
}
一楼说的不行 我试过了 。
展开
 我来答
PPoS丨丶灬疯杰
2009-11-04 · TA获得超过835个赞
知道小有建树答主
回答量:494
采纳率:0%
帮助的人:531万
展开全部
你的Date是内部类,需要有外部类的对象才可以实例化
或者不要写成内部类就没问题了
可以这样该: public static void main(String[] args)
{ TestBubble t=new TestBubble();
Date[] days = new Date[5];
days[0] = t.new Date(2008, 01, 02);//老是这点报错
days[1] = t.new Date(2007, 02, 03);
......
或者:直接在class Data前面加个大括号,去掉最后的大括号 保证这个类是外部类 不懂再Hi我吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aaronswon
2009-11-04 · TA获得超过3481个赞
知道大有可为答主
回答量:1863
采纳率:0%
帮助的人:1619万
展开全部
将Date声明为嵌套类,即静态的内部类即可,所以加一个关键字static

....
static class Date
{
int year,month,day;
Date(int y,int m,int d)
{
year=y;month=m;day=d;
}
.....
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1a812615e
2009-11-04 · TA获得超过1146个赞
知道小有建树答主
回答量:739
采纳率:66%
帮助的人:420万
展开全部
代码中大括号有问题,我改了下,可以运行了,自己看下是哪个括号。

public class TestBubble
{
public static void main(String[] args)
{
Date[] days = new Date[5];
days[0] = new Date(2008,1,2);//老是这点报错
days[1] = new Date(2007, 2, 3);
days[2] = new Date(2005, 3, 4);
days[3] = new Date(2006, 4, 5);
days[4] = new Date(2007, 5, 6);
Bubblesort(days);
for(int i=0;i<days.length;i++)
{
System.out.println(days[i]);
}
}
public static Date[] Bubblesort(Date[] a)
{
int len = a.length;
for(int i=len-1;i>=1;i--)
{for(int j=0;j<i-1;j++)
{if(a[j].compare(a[j+1])>0)
{
Date temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
return a;
}

}

class Date
{
int year,month,day;
public Date(int y,int m,int d)
{
year=y;month=m;day=d;
}

public int compare(Date date)
{
return year>date.year? 1
:year<date.year? -1
:month>date.month? 1
:month<date.month? -1
:day>date.day? 1
:day<date.day? -1 : 0 ;

}
public String toString()
{
return "Year:Month:Day -- " + year + "-" + month + "-" + day;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友dc81944bb
2009-11-04 · TA获得超过572个赞
知道小有建树答主
回答量:793
采纳率:0%
帮助的人:726万
展开全部
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
Date[] days = new Date[5];

try{
Date d = fmt.parse("2008-12-11"); //把String转成Date..new Date(String)这个方法过时了。。
days[0]=d;
}catch(Exception e){
e.printStackTrace();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hiker_cq
2009-11-04 · 超过18用户采纳过TA的回答
知道答主
回答量:104
采纳率:0%
帮助的人:75.3万
展开全部
把这个内部类独立出去
class Date
{
int year,month,day;
Date(int y,int m,int d)
{
year=y;month=m;day=d;
}

public int compare(Date date)
{
return year>date.year? 1
:year<date.year? -1
:month>date.month? 1
:month<date.month? -1
:day>date.day? 1
:day<date.day? -1 : 0 ;

}
public String toString()
{
return "Year:Month:Day -- " + year + "-" + month + "-" + day;
}
}

就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式