Setter-检查值

问题描述 投票:1回答:3

我应该检查该值,如果不是该值,则不更新该值。如果输入有效,那么我将其返回。我现在被困在这里。有人能帮我吗。我写了一些代码,但是没有用。

public class Student {
    private int studentId;
    private String name;
    private double grade;
    private double multiplier;


public double getMultiplier() {
    return multiplier;
}

/**
 * The setter for the multiplier must check that the value is either 1.08 *
 * 1.06 or 1.08 or 1.06
 * 
 * If not, then do not update the value
 * 
 * @param multiplier
 * @return if the input was valid
 */
public boolean setMultiplier(double multiplier) {


    if( multiplier == 1.08 * 1.06 || multiplier == 1.08 || multiplier == 1.06 ) {

    }
    return multiplier;
}
java if-statement return boolean setter
3个回答
0
投票

setter应该更新一个值,并且不返回值(getter的角色),因此它的返回类型应该为void而不是boolean

public void setMultiplier(double multiplier) {
    if( multiplier == 1.08 * 1.06 || multiplier == 1.08 || multiplier == 1.06 ) {
        this.multiplier = multiplier; 
    }
}

0
投票

我认为您只是忘记了实际设置新值。

因此,如果您这样做,它应该可以工作:

public void setMultiplier(double multiplier) {


    if( multiplier == 1.08 * 1.06 || multiplier == 1.08 || multiplier == 1.06 ) {
        this.multiplier = multiplier;
    }
}

此外,setter通常是void而不是布尔值,并且没有返回值。


0
投票
public void setMultiplier(double multiplier) {


    if (multiplier == 1.08 * 1.06 || multiplier == 1.08 || multiplier == 1.06) {
        this.multiplier = multiplier; //here
    }

        throw new IllegalArgumentException("exception message");
    }
}

您忘记编写类的字段变量。我的问题是,您是返回布尔值还是引发异常?

提示:我不会在代码中的任何地方分发我的常量1.06或1.08。您可以如下定义它:


public class student {

    private static final double MEANINGFUL_NAME_0 = 1.06;
    private static final double MEANINGFUL_NAME_1 = 1.08;

// other code below
}

© www.soinside.com 2019 - 2024. All rights reserved.