我是一名相当新手的高中程序员,我正在完成我上学的最后项目继承。我有一个名为“工人”的项目,这真的让我很难过。我需要能够打印出所有内容,但我似乎无法打印出我需要的内容,无需打印出来或获取“静态上下文错误中无法访问的方法”。以下是名为worker的超类的代码:
package mod6;
public class Worker {
public Worker(double wage, String name) {
private double hours; // I GET AN ERROR HERE that says "illegal start of expression"
private double wage;
private int rate;
private String name;
public double computePay(int hours) {
return hours * rate;
}
public String getName(String name) {
String temp[] = name.split("\\s");
char initial = temp[0].charAt(0);
String lname = temp[1];
return name = (lname + ", " + initial + ".");
}
}
编辑:我现在唯一的问题是上面的工人类的第7行中的错误。 这里是WorkerTester类的代码,我目前没有得到正确的输出:
package mod6;
public class WorkerTester extends Worker {
public WorkerTester(double wage, String name, int hours) {
super(wage, name);
}
public static void main(String[]args) {
System.out.println("Type" + "\t" + "Name" + "\t" + "Wage" + "\t" + "Hours" + "\t" + "Number of Pieces" + "Income"); } //**Nothing prints out below this line**
public void TestHourly() {
HourlyWorker John = new HourlyWorker(9.48, "John Doe", 43);
System.out.print("Hourly" + "\t" + getName("John Doe") + "\t" + "9.48" + "\t" + "43" + "\t" + "n/a" + "\t" + John.Wage());
}
public void TestSalaried() {
SalariedWorker Karen = new SalariedWorker(25.79, "Karen Jones", 52);
System.out.println("Salaried" + "\t" + getName("Karen Jones") + "\t" + "25.76" + "\t" + "52" + "\t" + "n/a" + "\t" + Karen.Wage());
}
public void TestPiece() {
SalariedWorker Wesley = new SalariedWorker(5.65, "Wesley Smith", 36);
System.out.println("Piece" + "\t" + getName("Wesley Smith") + "\t" + "5.65" + "\t" + "36" + "\t" + "1025" + "\t" + Wesley.Wage());
}
}
这可能是一个简单的解决方案,我只是无法用我有限的编程知识解决这个问题,而且我没有重新安排代码的想法。此外,编码可能是非常错误的(记住我是新手)所以请记住这一点。如果有人可以帮我修复这段代码以便正确打印出来,那就太好了!感谢。
以下是SalariedWorker类供参考:
公共类SalariedWorker扩展了Worker {
public SalariedWorker(double wage, String name, int hours) {
super(wage, name);
}
public double Wage() {
return computePay(40);
}
}
答案 0 :(得分:0)
您在main方法中声明了未调用的其他方法。删除方法,只需在main方法中实例化,初始化和打印所有worker。
此外,您在没有worker实例的情况下调用getName。你需要这样的东西。
Worker worker = new Worker(//pass your parameter);
worker.getName();
老实说,你错误地使用了getter方法,适当的getter应该返回私有变量或者对它进行一些小操作,而不是编辑你传递它的参数。
这是一个更好的吸气剂:
public String getName() {
String temp[] = name.split("\\s");
char initial = temp[0].charAt(0);
String lname = temp[1];
return (lname + ", " + initial + ".");
}
这样你就可以引用私有的实例变量名,而不是你最初传入方法的参数“name”