2011-02-26 285 views
2

這是我得到的錯誤:Java類「不能被解析爲一個類型」

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    TeamLeader cannot be resolved to a type 

    at TeamLeadDemo.main(TeamLeadDemo.java:26) 

這是我的代碼:

import java.util.Scanner; 

public class Employee { 
    public String empName, empNumber, hireDate;  

    public class TeamLeadDemo {} 

    public Employee(String empName, String empNumber, String hireDate) { 
     this.setEmpName(empName); 
     this.setEmpNumber(empNumber); 
     this.setHireDate(hireDate); 
    } 

    public void setEmpName(String empName) { 
     this.empName = empName; 
    } 
     public void setEmpNumber(String empNumber) { 
     this.empNumber = empNumber; 
    } 
    public void setHireDate(String hireDate) { 
     this.hireDate = hireDate; 
    } 
    public String getEmpName() { 
     return empName; 
    } 
    public String getEmpNumber() { 
     return empNumber; 
    } 
    public String getHireDate() { 
     return hireDate; 
    } 

    public class ShiftSupervisor extends Employee { 
     public double annualSalary, annualProduction; 
     //constructor 
     public ShiftSupervisor(String empName, String empNumber, 
           String hireDate, double annualSalary, 
           double annualProduction) { 
      super(empName,empNumber, hireDate); 
      this.setAnnualSalary(annualSalary); 
      this.setAnnualProduction(annualProduction); 
     } 

     public double getAnnualSalary() { 
      return annualSalary; 
     } 
     public double getAnnualProduction() { 
      return annualProduction; 
     } 
     public void setAnnualSalary(double annualSalary) { 
      this.annualSalary = annualSalary; 
     } 
     public void setAnnualProduction(double annualProduction) { 
      this.annualProduction = annualProduction; 
     } 

     public String toString() { 
      return "Name: "+ getEmpName() + "\nEmpID: "+ getEmpNumber() 
        + "\nHire Date: "+ getHireDate() + "\nAnnual Salary: " 
        + annualSalary + "\nProduction: "+ annualProduction; 
     } 

     public class employeeStart { 
      public void main(String[] args) { 
       String name, id, date; 
       double sal, prod; 

       //create scanner object 
       Scanner keyboard = new Scanner(System.in); 

       //inputting data 
       System.out.println("Enter Name: "); 
       name = keyboard.nextLine(); 
       System.out.println("Enter id: "); 
       id = keyboard.nextLine(); 
       System.out.println("Enter Hire Date: "); 
       date = keyboard.nextLine(); 
       System.out.println("Enter Annual: "); 
       sal = keyboard.nextDouble(); 
       System.out.println("Enter production: "); 
       prod = keyboard.nextDouble(); 

       //instantiating object 
       ShiftSupervisor pw = new ShiftSupervisor(name, id, date, sal, prod); 

       //outputting data 
       System.out.println("Employee Details: \n" + pw); 
      } 
     } 
     public class TeamLeader { 
      public double monthlyBonus; 
      public int minTraining, trainingPresent;  

      public TeamLeader(double monthlyBonus, int minTraining, int trainingPresent) { 
       this.setMonthlyBonus(monthlyBonus); 
       this.setMinTraining(minTraining); 
       this.addtrainingPresent(trainingPresent);      
      } 

      public void setMonthlyBonus(double monthlyBonus) { 
       this.monthlyBonus = monthlyBonus; 
      } 
      public void setMinTraining(int minTraining) { 
       this.minTraining = minTraining; 
      } 
      public void setTrainingPresent(int t) { 
       trainingPresent = t; 
      } 
      public void addtrainingPresent(int hours) { 
       trainingPresent += hours; 
      } 
      public double getMonthlyBonus() { 
       return monthlyBonus; 
      } 
      public int getMinTraining() { 
       return minTraining; 
      } 
      public int getTrainingPresent() { 
       return trainingPresent; 
      } 
      public String toString() { 
       return "Bonus: "+ getMonthlyBonus() + "\nMinimum Training: " 
       + getMinTraining() + "\nAttendence: "+ getTrainingPresent(); 
      } 
     } 
    } 
} 

另外,我在一個單獨的聲明本等級:

import java.util.Scanner; 

public class TeamLeadDemo extends Employee { 
    public TeamLeadDemo(String empName, String empNumber, String hireDate) { 
     super(empName, empNumber, hireDate); 
     // TODO Auto-generated constructor stub 
    } 

public static void main(String[] args) { 
    double sal; 
    int min, atten; 

    //create scanner object 
    Scanner keyboard = new Scanner(System.in); 

    //inputting data 
    System.out.println("Enter minimum training: "); 
    min = keyboard.nextInt(); 
    System.out.println("Enter id: "); 
    atten = keyboard.nextInt(); 
    System.out.println("Enter Bonus: "); 
    sal = keyboard.nextDouble(); 

    //instantiating object 
    ShiftSupervisor pw = new TeamLeader(sal, min, atten); 

    //outputting data 
    System.out.println("Employee Details:\n" + pw); 

    } 
} 

什麼是導致此錯誤,我該如何解決它?

編輯:縮進,空白,命名約定和可讀性問題已有所解決。

+2

你的命名約定也差不多。 [請修復它們。](http://www.oracle.com/technetwork/java/codeconventions-135099.html#367) – ide 2011-02-26 04:45:31

+3

這意味着如果您的問題得到了很好的回答,您需要點擊複選標記在它的旁邊。這會給你和回答者的要點,這是說「謝謝你」的好方法。不這樣做被認爲是粗魯的。通讀所有問題並接受答案可能是一個好主意。 – EboMike 2011-02-26 04:46:12

回答

4

問題是,TeamLeader似乎是一個內部類(很難說,你的縮進是壞的),並且因爲它不是靜態的,所以你不能自己實例化它。你或者需要製作TeamLeader它自己的類,或者使其成爲static類並將它實例化爲Employee.TeamLeader(或者任何父類,否則縮進在這裏真的沒有幫助)。

+0

我不明白爲什麼日食要求我申報一個新課程。公共類TeamLeader擴展ShiftSupervisor { }然後問我要聲明另一個類 公共類ShiftSupervisor { } – lonesarah 2011-02-26 05:10:04

+0

Upvoted縮進是壞。編碼風格和一致性是一個美麗而且非常有用的東西。 – SgtPooki 2015-05-18 16:19:29

1

你的異常消息說,這

Exception in thread "main" java.lang.Error: Unresolved compilation problem: TeamLeader cannot be resolved to a type

這意味着你試圖運行使用的一些類,沒有正確編譯的程序。

返回並修復編譯錯誤。

目前尚不清楚編譯錯誤應該是什麼修復程序,但錯誤是說它無法找到名爲TeamLeader的類。也許它不存在。也許它是在一個不同的包中。也許你還沒有編譯它。也許別的東西。


看代碼,我認爲這個問題是您所定義兩個分別名爲TeamLeadDemo不同的類別,一個作爲嵌套類Employee,第二個作爲一個頂級類。此外,其中第二個嘗試使用TeamLeader ...但您實際聲明的TeamLeader類在Employee中嵌套了2個級別;即它的真名是Employee.ShiftSupervisor.TeamLeader

這一切都有點荒謬。

從外觀上看,你在同一個文件(「Employee.java」)中定義了一大堆類,而沒有太多的理解將一個類放在另一個類中的含義。很可能,每個類都應該在自己的文件中聲明。最有可能的是,你應該刪除嵌套的TeamLeadDemo類。

0

如果這個問題是與Maven項目,然後用鼠標右鍵單擊的Maven>更新項目應該解決的問題

-1

,如果你從什麼地方移動它創建內部類,也可能出現該錯誤,並與重組,您將該內部類的導入行放入其外部類文件中。之後,內部類cannot be resolved to a type任何地方。自動插入導入將無濟於事。

您還沒有發佈外部類的導入部分,我們無法檢查該變體。檢查它,如果過度導入,請將其刪除。

如果您在Eclipse中工作,那麼很可能需要在此之後清理項目。

相關問題