“Java类”;无法解析为“类型”;
这就是我得到的错误: 线程“main”java.lang中出现异常。错误:未解决的编译问题: 无法将TeamLeader解析为类型 位于teamleademo.main(teamleademo.java:26) 这是我的代码:“Java类”;无法解析为“类型”;,java,constructor,Java,Constructor,这就是我得到的错误: 线程“main”java.lang中出现异常。错误:未解决的编译问题: 无法将TeamLeader解析为类型 位于teamleademo.main(teamleademo.java:26) 这是我的代码: import java.util.Scanner; public class Employee { public String empName, empNumber, hireDate; public class TeamLeadDemo {
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);
}
}
导致此错误的原因是什么?我可以如何解决它
编辑:缩进、空白、命名约定和可读性问题已经得到了一定程度的解决。问题在于
团队领导似乎是一个内部类(很难说,缩进是不好的),因为它不是静态的,所以不能单独实例化它
您需要将TeamLeader
设置为自己的类,或者将其设置为static
类,并将其实例化为Employee.TeamLeader
(或者无论父类是什么,您的缩进在这里都没有帮助)。您的异常消息会这样说
线程“main”java.lang中出现异常。错误:未解决的编译问题:无法将TeamLeader解析为类型
这意味着您试图运行的程序使用了一些未正确编译的类
返回并修复编译错误
不清楚编译错误的修复应该是什么,但错误表明它找不到名为TeamLeader
的类。也许它不存在。也许它在另一个包中。也许你还没有编译它。也许还有别的
查看代码,我认为问题在于您定义了两个不同的类,称为TeamLeadDemo
,一个是Employee
的嵌套类,另一个是顶级类。此外,第二种方法是尝试使用团队领导
。。。但是您实际声明的TeamLeader
类在Employee
中嵌套了两层;i、 e.其真名为Employee.ShiftSupervisor.TeamLeader
这一切都有点荒谬
从外观上看,您在同一个文件(“Employee.java”)中定义了一大堆类,而没有太多地理解将一个类放入另一个类中意味着什么。最有可能的是,这些类中的每一个都应该在自己的文件中声明。最有可能的是,您应该删除嵌套的TeamLeadDemo
类。如果此问题与maven project有关,那么右键单击maven>Update project应该可以解决此问题。如果您通过从某个位置移动内部类并进行重组来创建该类,则也会出现此错误,您将该内部类的导入行放入其外部类文件中。此后,内部类无法解析为任何位置的类型。自动插入导入将无济于事
您尚未发布外部类的导入部分,我们无法检查该变体。检查它,如果存在过度导入,则将其移除
如果您在Eclipse中工作,很可能需要在那之后清理项目。您的命名约定也同样糟糕。这意味着如果你的问题得到了一个好的答案,你需要点击旁边的复选标记。这会让你和回答者都得到分数,这是一种表达“谢谢”的好方式。不这样做被认为是粗鲁的。浏览所有问题并接受答案可能是个好主意。我不明白为什么buy eclipse要我声明一个新类。公共类团队负责人扩展了ShiftSupervisor{},然后它要求我声明另一个类公共类ShiftSupervisor{}被投票赞成缩进是坏的。编码风格和一致性是一件美丽且非常有用的事情。几乎忘记了这一点。。。。