困住我这个菜鸟一晚上的问题(未解决)
public static void main(String args[])
{
String a="1983-12-6";
A y=new A();
y.judge(a);
System.out.println("pass");
}
这是调用部分.后面东西太多不便贴出.编译的时候出错:non-static variable this cannot be referenced from a static context指的是A y=new A();这句.
问题点数:10、回复次数:12Top
1 楼happyegg(放松放松)回复于 2003-10-04 00:40:56 得分 0
你的new A()里面是不是调用了什么不是static的东西?这个exception从你贴的程序中看不出来Top
2 楼CNSC(王)回复于 2003-10-04 00:48:15 得分 10
是不是你的A是main所在的这个类的一个内部方法,如果是的,你把 class A 改成static class A就可以了。Top
3 楼SwordsmanF(香香的味道)回复于 2003-10-04 00:59:38 得分 0
楼上的说得可能不对吧?
main里面的类不一定要是static的哦。Top
4 楼CNSC(王)回复于 2003-10-04 09:27:46 得分 0
你自己实验一下就可以了:
public class Test{
class name{
void print(){System.out.println("Test");}
}
public static void main(String[] args)
{
name n=new name();
n.print();
}
}
这个程序产生的错误与他的程序产生了同样的错误。
而加上static 后却是正确的
Top
5 楼tomcatjava(小鱼儿)回复于 2003-10-04 09:54:17 得分 0
严重同意 CNSC(王) 的说法!!Top
6 楼JCC0128(代码写到手抽筋)回复于 2003-10-04 11:54:33 得分 0
严重同意 CNSC(王) 的说法!!
Top
7 楼JCC0128(代码写到手抽筋)回复于 2003-10-04 11:59:37 得分 0
public class Test{
class name{
void print(){System.out.println("Test");}
}
public static void main(String[] args)
{
name n=new name();
n.print();
}
}
如果用这种方式(类中其它类作成员)
name n=new name();只实例化了n,但n中的name只是一个类型,还是个空值。最好声明一个name类型的变量,再实例化它。进行调用Top
8 楼zhch200()回复于 2003-10-04 12:20:59 得分 0
你们只说怎么做,可不可以告诉我为什么.Top
9 楼fxxxgxxx(我说我是基地组织的,没人信呀.....)回复于 2003-10-04 13:52:46 得分 0
main方法是static的,他所调用的方法,变量也必须是static的。
main方法是程序运行的入口,这时类的对象还没有实例化,所以必须是static的,无需实例化就可以运行。Top
10 楼JCC0128(代码写到手抽筋)回复于 2003-10-04 14:01:11 得分 0
这属于面向对象的内容,多看看面向对象的书~Top
11 楼prosong(prosong)回复于 2003-10-04 22:28:58 得分 0
如果不把内部类声明为 static
应该向如下把它new出来:
public class T{
int t1 = 0;
public class A{
int i = 0;
}
public static void main(String args[]){
T t = new T();
A a = t.new A(); // 这行
a.i = 10;
System.out.println(a.i);
}
}Top
12 楼lihenggg(李清扬)回复于 2003-10-05 18:11:56 得分 0
就在贴出这个贴之后半小时,小弟突然茅塞顿开,自己解决了问题。终于理解到了这其中的原由.但还是衷心谢谢大家的帮助!!!把分给了cnsc(王).其他关心这个贴的朋友对不起了.Top




