2010-08-12 247 views
0
class Employee 
{ 
int emp_no; 
String emp_name; 
double emp_sal; 

public Employee(int e_no,String e_name,double e_sal) 
{ 
emp_no=e_no; 
emp_name=e_name; 
emp_sal=e_sal; 
} 

public double calBonus() 
{ 
return (emp_sal/10); 
} 

public void display() 
{ 
System.out.println("Employee No: "+this.emp_no); 
System.out.println("Employee Name: "+this.emp_name); 
System.out.println("Employee Gross Salary: "+ (emp_sal+calBonus())); 
} 

} 

class Clerk extends Employee 
{ 
String Grade; 

public Clerk(int e_no,String e_name,double e_sal,String e_Grade) 
{ 
super(e_no,e_name,e_sal); 
Grade=e_Grade; 
this.set_Grade(e_Grade); 
} 
String set_Grade(String e_Grade) 
{ 
**this.Grade=e_Grade; 
} 
String get_Grade() 
{ 
return this.Grade; 
}** 

public void display() 
{ 
super.display(); 
System.out.println("Grade: " + this.Grade); 
} 

} 

class PaySlip 
{ 
public static void main(String args[]) 
{ 
Employee c1; 

c1=new Clerk(76,"Saman",12000.50,"Grade1"); 

c1.display(); 
} 
} 

**編譯錯誤:缺少return語句

有些事情不對的粗體lines.But我想不出它out.When我編譯這顯示一個錯誤說「缺少return語句,‘}’ 。

**

+0

SRY。我編輯了粗線。你可以回滾 – RoflcoptrException 2010-08-12 19:29:11

+0

你可以編輯你的問題,選擇所有的代碼,並點擊編輯器中的代碼示例按鈕¹,使其更具可讀性? 1)與101/010 – 2010-08-12 19:30:50

+0

btw按鈕不要使用駝峯字段,使用非大寫字母開頭。 – 2010-08-12 19:35:51

回答

6
String set_Grade(String e_Grade) 
{ 
    this.Grade=e_Grade; 
} 

應該

void set_Grade(String e_Grade) 
{ 
    this.Grade=e_Grade; 
} 

你已經聲明返回類型爲String它應該是void,因爲你沒有return語句它是一個setter。

1
String set_Grade(String e_Grade) 
{ 
this.Grade=e_Grade; 
} 

你宣佈set_Grade返回String,但沒有return聲明。也許你想要的方式「迴歸」 void代替:

void set_Grade(String e_Grade) 
{ 
this.Grade=e_Grade; 
} 

順便說一句,通常的方式來命名getter和setter方法在Java中是沒有下劃線:setGrade

0
String set_Grade(String e_Grade) 
{ 
**this.Grade=e_Grade; 
} 
String get_Grade() 
{ 
return this.Grade; 
}** 

你有一個默認的方法應該返回一個字符串。

public void set_Grade(String e_Grade) 
{ 
    this.Grade=e_Grade; 
} 
public String get_Grade() 
{ 
    return this.Grade; 
} 

Within an instance method or a constructor, this is a reference to the current object — the object whose method or constructor is being called. You can refer to any member of the current object from within an instance method or a constructor by using this

您也可以使用它來設置泛型參數的方法

public <T> T doStaf(T t) { 
     //method body 
     return t; 
    } 

    public void doStaff2() { 

     String s = this.<String>doStaff("STRING"); 

    } 

PS的格式化不會在代碼塊的工作

0

的事情數我會修復。

  1. 變化

    字符串set_Grade(字符串e_Grade) { this.Grade = e_Grade; }

public void set_Grade(String e_Grade) 
{ 
this.Grade=e_Grade; //also fix the variable name to start with lower case like grade.. followed by convention 
} 
  • 在下面的構造應用此,以防止模糊。

    公共僱員(INT e_no,字符串e_name,雙e_sal) {

    this.emp_no = e_no;

    this.emp_name = e_name;

    this.emp_sal = e_sal;

    }

  • 0

    「set_Grade」方法沒有返回一個「字符串」,因此,編譯器不喜歡它。

    這種類型的方法被稱爲「setter」或「mutator」(而不是「getter」或「accessor」)。大多數setter方法不返回值,因此返回類型應該是「void」。因此,將「String」替換爲「void」將允許您的代碼進行編譯。

    另一方面,Java編碼約定規定了如何命名方法的最佳實踐規則。所以,你的方法應該被命名爲:

    無效setGrade(....)

    SP