2015-03-02 118 views
-1

我有這兩種方法。我理解「getTotalSalary」,但並不真正瞭解「getAverageSalary」的寫法。我不明白爲什麼使用問號和冒號以及「(size()!= 0)」以及末尾是0。有人可以向我解釋這一點的代碼(簡單)

這是編碼:

public double getTotalSalary() { 
    double total = 0; 
    for (Employee e : empReg) { 
     total = total + e.getSalary(); 
    } 
    return total; 
} 

public double getAverageSalary() {  
    return (size() != 0) ? this.getTotalSalary()/this.size() : 0; 
} 

empReg是ArrayList中的名稱。員工是一個由「姓名」和「工資」組成的班級。 getSalary顯然是一種返回工資的方法。

+0

我相信有什麼困惑,你是'三元Operator' http://en.wikipedia.org/wiki/%3F:#Java – Dragondraikk 2015-03-02 15:56:09

+0

getAverageSalary()實現完全是爲了避免被零除。這是Java的三元運算符,這裏描述http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html – unigeek 2015-03-02 15:56:30

回答

3

你不能被零除。 ?和:是一個三元操作符。這意味着如果?之前的表達式爲真,則將返回this.getTotalSalary()/this.size(),否則返回0.

6

問號稱爲三元運算符,它用於根據評估做出決定。它通常用於替換if語句,因爲它們執行相同的操作。例如,if語句與將被寫入:

if (size != 0) 
    return this.getTotalSalary()/this.size(); 
else 
    return 0; 

根據我的經驗,如果我想減少代碼大小我只用它。但是,它確實使代碼更難以閱讀。

+0

謝謝,先生。 – Lazio 2015-03-02 17:03:58

相關問題