我编写了如下代码,编译通过,但运行时出现问题(JDK版本是:1.6.0_07).请各位高手指出错误之处,不胜感激!
class Bar
{
int barNum=28;
}class Foo
{
Bar myBar=new Bar();
void changeIt(Bar mybar){
myBar.barNum=99;
System.out.println("myBar.barNum in changeIt is"+myBar.barNum);
myBar=new Bar();
myBar.barNum=420;
System.out.println("myBar.barNum in changeIt now is"+myBar.barNum);
}
public static void main(String[] arg){
Foo f=new Foo();
System.out.println("f.myBar.barNum is"+f.myBar.barNum);
f.changeIt(f.myBar);
System.out.println("f.mybar.barNum after changeIt is"+f.myBar.barNum);
}
}

解决方案 »

  1.   

    class Foo 改成public class Foo 并且该文件命名为Foo.java
      

  2.   


    public class LztTestDemo { public static void main(String[] arg) {
    Foo f = new Foo();
    System.out.println("f.myBar.barNum is" + f.myBar.barNum);
    f.changeIt(f.myBar);
    System.out.println("f.mybar.barNum after changeIt is" + f.myBar.barNum);
    }
    } class Bar {
    int barNum = 28;
    } class Foo {
    Bar myBar = new Bar();

    void changeIt(Bar mybar) {
    myBar.barNum = 99;
    System.out.println("myBar.barNum in changeIt is" + myBar.barNum);
    myBar = new Bar();
    myBar.barNum = 420;
    System.out.println("myBar.barNum in changeIt now is" + myBar.barNum);
    }
    }
    结果如下:myBar.barNum in changeIt is99
    myBar.barNum in changeIt now is420
    f.mybar.barNum after changeIt is420
      

  3.   

    怎么改要看楼主怎么写代码了.请你看一下java的四种访问修饰符,和java类的分类.一楼的说法是真确的改法之一
      

  4.   

    对,把类Foo改成public的就可以了
      

  5.   

    是的,main方法的对象得声明为public
      

  6.   

    只要文件名是Foo.java就行了,不用加public修饰符