package javaapplication1;
class WaterSource{
    private String s;
    public WaterSource() {
        System.out.println("WaterSource()");
        s = "constructed";
    }
    public String toString() {
        return s;}
   
}
    public class SprinkLerSystem{   //在此处为public就不可以,出现这样的错误?   /*“D:\Documents and Settings\Administrator\JavaApplication1\src\javaapplication1\Main.java:14: 类 SprinkLerSystem 是公共的,应在名为 SprinkLerSystem.java 的文件中声明
”*/    private String v1,v2,v3,v4;
    private WaterSource source = new WaterSource();
    private int i;
    private float f;
    public String toString() {
        return
                "v1=" + v1+" "+
                "v2=" + v2+" "+
                "v3=" + v3+" "+
                "v4=" + v4+" "+
                "source=" + source;
    }  
    public static void main(String[] args) {
        SprinkLerSystem a = new SprinkLerSystem();
        System.out.println(a);
    }   
}问题在注释的部分,请给出出错的原因,并怎么改可以用public?谢谢~~

解决方案 »

  1.   

    可以的 关键是你的文件名是不是SprinkLerSystem.java
      

  2.   

    恩,正确
    你是Main.java,要是这么写public class SprinkLerSystem{文件名就应该为SprinkLerSystem.java
    JAVA中的文件名要和public的类名相同的,因为classLoader在加载一个类的时候是根据那个.class的文件来找的,所以要是
    不一致的话就没法new了
      

  3.   

    SprinkLerSystem a = new SprinkLerSystem(); 
    我感觉是这一句错了,没有SprinkLerSystem这个类啊 
     public class SprinkLerSystem{ 
            public static void main(String[] args) { 
                  SprinkLerSystem a = new SprinkLerSystem(); 
                  System.out.println(a); 
        }
           class SprinkLerSystem{
              ...
           }
      }  
      

  4.   

    一个Java应用程序(不是applet)
    可以有0个或者1个public类
    你说默认访问权限可以是因为Java应用程序的入口是main
    所以有没有public都没有关系