Объявление переменных, ограниченных указанным диапазоном в Java - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь объявить переменные, лежащие в определенном диапазоне, которые будут выступать в качестве параметров для любой функции, частью которой они являются. У меня есть три переменные в минуту.

class xvalues {

double x1;

double x2;

double x3; }

Я хочу сделать это таким образом, чтобы я мог определить переменные в их собственном классе, скажем, «xvalues» (с ограничениями, например, если x1 находится в диапазоне (0, inf), x2 находится в диапазоне (4 , 8) и x3> 0), чтобы я мог затем взять значения xvalue в качестве моего параметра для моей функции и затем свободно ввести x1, x2 и x3 в моей функции.

например, взять такую ​​функцию, как;

static double f1(xvalues)
{
    return 5*x1 + x2 + 3*x3
}

и возврат нуля, если значения находятся за пределами диапазона.

1 Ответ

0 голосов
/ 15 января 2019

Вы можете сделать это, добавив IllegalArgumentException в свои сеттеры: -

public class XValues {
    private Double x1;
    private Double x2;
    private Double x3;

    public XValues(Double x1, Double x2, Double x3) {
        setX1(x1);
        setX2(x2);
        setX3(x3);
    }

    public void setX1(Double x1) {
        if (x1 < 0) throw new IllegalArgumentException("x1 can't be negative");
        this.x1 = x1;
    }

    public void setX2(Double x2) {
        if (x2 < 4 || x2 > 8) throw new IllegalArgumentException("x2 must be in range (4, 8)");
        this.x2 = x2;
    }

    public void setX3(Double x3) {
        if (x3 < 0) throw new IllegalArgumentException("x3 can't be negative");
        this.x3 = x3;
    }

    // GETTERS here
}

Затем, когда вы попытаетесь инициализировать объект или установить недопустимые значения, будет сгенерировано исключение.

XValues xValues = new XValues(-1.0, 2.0, 3.0); //java.lang.IllegalArgumentException: x1 can't be negative

Вы также можете вызвать исключение в методах получения и вернуть null из вашего метода, как вы и просили, например: -

static Double f1(XValues xValues) {
    try {
        return 5 * xValues.getX1() + xValues.getX2() + 3 * xValues.getX3();
    } catch (IllegalArgumentException e) {
        return null;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...