这可以是设置包容性比例的正确方法吗?

时间:2016-10-17 15:29:21

标签: java

对不起,这是我的第一篇文章,它可能含糊不清,可能不是。希望我能提供足够的信息。所以: 我想从我认识的用户(int)中取一个整数,但我希望它从3到5的范围内。 我是否正确地执行以下操作:

public Number(int enteranumber)
{
  enteranumber = 3;
}

这是否意味着如果用户尝试输入小于3的数字,则该字段将自动设置为3.当用户输入大于3时,enteranumber的值将更改为用户放置的任何值。 我认为这需要一个if语句,但我不认为在构造函数中使用它是正确的。这就是我被告知的事情 非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

当您实例化enteranumber对象时,您提供的当前代码段将覆盖new Number()的值为3。无论在该参数中传递什么,即new MyNumber(69),构造函数都会立即覆盖传递的参数,69基本上为3。

在构造函数内完成很好,如果这是你想要做的。您是否希望在实例化对象时或在不同时间运行逻辑?如果是前者,那么在构造函数中就好了。这将是你将如何做到这一点

/**
 * Primary class
 */
class MyMainClass
{
    public static void main(String[] args)
    {
        MyNumber number = new MyNumber(69);
        System.out.print(number.getEnterANumber()); // Output will be 5 in this scenario
    }
}

/**
 * Number POJO
 */
class MyNumber
{
    private int enteranumber_;

    public Number(int enteranumber) 
    {
        // Sets the value
        enteranumber_ = enteranumber;

        // Checks if the value is on the wrong side of 3
        if(enteranumber_ < 3)
        {
            // If it is, then sets the number to 3
            setEnterANumber(3);
        {

        // If you want the number to definitely be 3 - 5 inclusive
        else if(enteranumber_ > 5)
        {
            setEnterANumber(5);
        }
    }    

    // Modifier
    private static void setEnterANumber(int enteranumber)
    {
        enteranumber_ = enteranumber;
    {

    // Accessor
    public int getEnterANumber()
    {
        return enteranumber_;
    }    
}

if else块将更改值的唯一时间是传递的值是0,1,2,6,7,8 ......