这个程序书上是说明“包”的用法的程序,但是我并没有明白。把书上的程序照抄一遍,还现了错误,自己还发现不了。请大家帮忙。import com.horstmann.corejava.*;
import static java.lang.System.*;public class Study
{
public static void main(String[] args)
{
Employee harry = new Employee("Harry Hacher", 5000, 1989, 10, 1);
harry.raiseSalary(5);
System.out.println("name = " + harry.getName());
}
}package com.horstmann.corejava;
import java.util.*; public class Employee
{
private String name;
private double salary;
private Date hireDay;
public Employee(String n, double s, int year, int month, int day)
{
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month-1, day); 
hireDay = calendar.getTime();
}

public String getName()
{
return name;
}

public double getSalary()
{
return salary;
}

public Date getHireDay()
{
return hireDay;
}

public void raiseSalary(double byPercent)
{
salary = salary + salary*byPercent/100;
}
}错语提示如下:

解决方案 »

  1.   

    import static java.lang.System.*;  这干嘛用
      

  2.   

    import static java.lang.System.*; 这个是可以替代System.out的头文件。我确实是把两个文件综合在一起了,但是两个文件分开来写怎么得出正确的显示呢?请2楼帮我进一步说明,好吗?
      

  3.   

    是要把这两个文件分开写进两个java文件里吗?
      

  4.   

    是啊, 下半截是包, 写在一个文件里, 编译, 上半截里面才能 import com.horstmann.corejava.*;包
      

  5.   


    是的 一个文件名是 study 一个是 Employee
      

  6.   

    我在E盘中出现了com的文件夹。
      

  7.   


    第一个文件 import com.horstmann.corejava.*; 去掉
    第二个文件 package com.horstmann.corejava;  去掉新手先不要用包了 等以后熟悉了再学习 循序渐进
      

  8.   


    是啊,必须得出现啊,而且你看出错提示都提示你路径不对了,你看看你的包,前面不是com.horstmann.corejava 吗,你把你的Employee.java编译后放到 com\horstmann\corejava\ 里面,如果没有子文件夹就自己创建,Study.java要跟你的com文件夹同级,然后再运行下Study看到输出 name = Harry Hacher 就对了
      

  9.   

    分别写在Study.java 和Employee.java文件里
    既然你用了静态导入import static java.lang.System.*;
    就不要System.out.println了,直接out.println就行了
      

  10.   

    这个是静态引用,这样就可以直接调用System类的静态方法,不用写类名
      

  11.   

    编译出错是因为Employee的构造方法第二个参数是double类型,你在new对象的时候传的参数是int类型
      

  12.   

    1.若使用package,则package语句必须是非注释外的第一条语句。
    2.一个文件中只能有一个类可以声明为public。
    仅供参考。
      

  13.   


    是啊,必须得出现啊,而且你看出错提示都提示你路径不对了,你看看你的包,前面不是com.horstmann.corejava 吗,你把你的Employee.java编译后放到 com\horstmann\corejava\ 里面,如果没有子文件夹就自己创建,Study.java要跟你的com文件夹同级,然后再运行下Study看到输出 name = Harry Hacher 就对了我把Employee.java,放在com\horstmann\corejava\里了,里面现在有两个文件,一个是Employee.class,一个是Employee.java。
    运行Study还是不能成功输出。另外,Employee.java.dak是不是不用管?
    大家说得很明白,我终是没有实现出来。17楼说声明时用了double,在new时用了int,书上也是这样的,好像jav整数时可以不用写小数位0,输出进会自动用小数点与后面的0.18楼说一个文件用一个public,书上也是这样说的,但是我后来分别存进了两个java文件里,应该可以用了。
      

  14.   

    另外回复12楼,是不是Employee.java移到com\horstmann\corejava\去时,是用复制还是用剪切,原来的位置是否还要留着?我截图给你们看我的这两个文件的情况:
      

  15.   

    一个文件里面只能有一个public 类!!
      

  16.   

    我这刚运行了下, 没问题,书上的例子是对的。 
    你移动Employee.class到com\horstmann\corejava\下就行了,复制或者剪切其实没影响
      

  17.   

    我试了,还是出现以前说的错误Study.java:8: 错误: 无法访问Employee
                    Employee harry = new Employee("Harry Hacher", 5000, 1989, 10, 1);
                    ^
      错误的源文件: .\Employee.java
        文件不包含类Employee
        请删除该文件或确保该文件位于正确的源路径子目录中。
    1 个错误
      

  18.   

    基本功啊:
    一个类只能有一个public的类,且名字与文件名相同;
    包路径要对应有文件路径;
      

  19.   

    首先,楼主应该把这两个public class放在不同的文件夹里,一个文件只能有一个public class。
    其次,楼主在编译的时候,应该把两个class都编译了。
      

  20.   

    “com”这个文件夹只要在文件夹Study里就行了,在不在“java练习程序”里都行,在不在"Employee“文件夹里也行。