有人可以向我解释这段代码(简单)

时间:2015-03-02 15:53:12

标签: java

我有这两种方法。我理解" 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的名称。员工是一个由" name"组成的班级。 "薪水"。 getSalary显然是一种返回工资的方法。

4 个答案:

答案 0 :(得分:6)

问号称为三元运算符,用于根据评估做出决策。它通常用于替换if语句,因为它们执行相同的操作。例如,将使用if语句编写:

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

根据我的经验,如果我想减少代码大小,我只会使用它。但是,它确实使代码更难以阅读。

答案 1 :(得分:3)

你不能除以零。 ?和:是三元运算符。这意味着如果?之前的表达式为真,则返回this.getTotalSalary() / this.size(),否则返回0.

答案 2 :(得分:0)

在java中称为三元运算符,这里有一些示例:http://alvinalexander.com/java/edu/pj/pj010018

答案 3 :(得分:0)

请参阅此讨论:What is a Question Mark "?" and Colon ":" Operator Used for?

它解释了

  

编写了C,Java和JavaScript中的传统if-else结构:

if (a > b) {
    result = x;
} else {
    result = y;
}
  

这可以改写为以下声明:

result = a > b ? x : y;