как можно написать ниже функцию changeValue в ближайшее время? - PullRequest
0 голосов
/ 26 октября 2019

код ниже написан от Java . Мне нужно изменить значение переменной динамически по функции. как мы можем написать ниже функция changeValue в ближайшее время? Есть ли способ передать ссылку на переменную функции?

public class Project{
    private int value1;
    private int value2;
    private int value3;
    private int value4;

    public static void main(String[] args) {
        this.changeValue("value1",10)
        this.changeValue("value2",25)
        this.changeValue("value3",30)
        this.changeValue("value4",40)
    }

    public String changeValue(String varName,String value){
        if(varName=="value1"){
            this.value1=value
        }else if(varName=="value2"){
            this.value2=value
        }else if(varName=="value3"){
            this.value3=value
        }else if(varName=="value3"){
            this.value4=value
        }
    }

}

1 Ответ

0 голосов
/ 26 октября 2019

Ваш код, как опубликовано, содержит много ошибок;например, вы не можете хранить String в int - String value должно быть int value. Вы не можете вызывать методы экземпляра из контекста static с this в main и т. Д. Однако, к вашему вопросу, да , вы можете сделать changeValue короче, сохранить свои значения вмассив. Кроме того, changeValue не возвращает String - но если вы сделаете так, чтобы оно вернуло Project, вы можете связать свои вызовы с changeValue(). Например,

private int[] values = new int[4];

public static void main(String[] args) {
    Project p = new Project();
    p.changeValue("value1", 10).changeValue("value2", 25)
            .changeValue("value3", 30).changeValue("value4", 40);
    System.out.println(p);
}

public Project changeValue(String varName, int value) {
    int i = Character.digit(varName.charAt(varName.length() - 1), 10) - 1;
    values[i] = value;
    return this;
}

@Override
public String toString() {
    return Arrays.toString(values);
}

См. Также шаблон Builder .

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...