2016-02-21 7 views
0

У меня есть несколько переменных, которые отличаются «i», например. wip0, wip1, ... wip26. Каждый из них представляет собой набор целых чисел. Это, наверное, очень легко, но я не могу найти ответ.Как создать Funtion для обновления переменных, которые отличаются i?

Как создать функцию для обновления данной переменной?

У меня есть функция для обновления определенной переменной, но я не хочу создавать 27 функций.

Теперь у меня есть:

updateWip(int type, int quantity){ 
int temp; 
temp = wip.get(type); 
temp = temp + quantity; 
wip.set(materialType, temp); 
} 

мне нужно будет что-то вроде этого:

updateWip(int type, int quantity, int station) 
+0

Сделать локальный массив для хранения переменных «27» и сохранить их там? –

+0

Не так много переменных. Имейте массив в первую очередь. –

ответ

1

Определяет массив в вашем окружении класса и использовать в station аргумента в качестве индекса массива, как следующее:

class Stations { 
    WIP[] wip = new WIP[27]; 
    public void updateWip(int type, int quantity, int station) { 
    //... 
    wip[station].set(materialType, temp); 
    } 
} 

Однако, это требует, чтобы инициализировать поля массива, потому что каждое поле, такое как'wip [0] ', будет в первую очередь null. Чтобы преодолеть это, вы можете добавить цикл, инициализирующий поля массива, например. в конструкторе. Для получения дополнительной информации о массивах посмотрите на this site.

Когда вы используете java8, вы также можете использовать потоковый API для создания заполненного массива с нужным контентом. Тогда вы могли бы объявить свойство в классе, как это:

WIP[] wip = IntStream.generate(() -> new WIP()).limit(27).toArray(); 

См this post, где я получил шаблон потокового из.

0

Как я могу создать функцию для обновления заданной переменной?

У вас нет. Правильным решением является замена wip0, wip1,... wip26 на одну переменную, которая представляет собой массив из 27 элементов. Затем используйте индексирование массива, чтобы выбрать соответствующий элемент массива для чтения/обновления.

Теоретически вы можете использовать отражение, чтобы обновить переменные, если они были полями (а не локальными переменными!), Но это довольно ужасно (сложный код, на порядок неэффективный, хрупкий). Просто не делайте этого ...

 Смежные вопросы

  • Нет связанных вопросов^_^