2015-03-02 74 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

相关问题