为什么我在Eclipse中运行Java程序时,当整个程序只是一个类时就能运行成功,但当有两个类时就无法运行了呢

成功运行的程序:
public class first {
public class second
{
public int i;
public second()
{
this.i=0;
}
}
/**
* @param args
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("hello world");
}
}
不能成功运行的程序:
public class first {
public class second
{
public int i;
public second()
{
this.i=0;
}
}
/**
* @param args
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("hello world");
second s;
s.i =1;
}
}
问题:只要在main()中用到其他类的时候就会出错,谁能帮我解决这个问题呢?谢谢了

你把一个类放在另一个类的内部,second在first内,则second类为内部类
你可看看这样改:
public class first {

public static class second { //要在静态的main中调用,则要声明
//其为static

public int i;

public second() {
this.i = 0;
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("hello world");
second s = new second();
s.i = 1;
System.out.println(s.i);
}
}

如果你是想在first类中调用second类中方法,则应该将second放在first类的外面,如下:

public class first {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("hello world");
second s = new second();
s.i = 1;
System.out.println(s.i);
}
}
class second { //不能声明为public

public int i;
public second() {
this.i = 0;
}
}

注意:一般类名首字母要大写
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-09-02
second s;
改成second s=new second();
试试
第2个回答  2010-09-05
对于second类,你没有创建对象,故在运行主函数时会出错,
你可以将second s; 改成 second=new second();
第3个回答  2010-09-13
对于内部类的创建,首先要创建外部类:
Test t=new Test();
然后再创建内部类
Test.second s=t.new second();
第4个回答  2010-09-02
是不是你没有导包啊
相似回答