Создание переменных во время выполнения в Java - PullRequest
0 голосов
/ 10 ноября 2010

В моем коде у меня довольно большой цикл, и мне нужно создать новую переменную в конце каждой итерации (целые числа). Это возможно? Я читал о классе ScriptEngineManager, но я не уверен, сможет ли это помочь. Я предполагаю, что мог бы создать группу целых чисел, равных 0, но я не совсем уверен, сколько раз мне нужно будет создать новую переменную (это зависит от условий цикла). Надеюсь, это имеет смысл.

Ответы [ 3 ]

3 голосов
/ 10 ноября 2010

Использовать массив.В Javascript поместите var results = [] перед циклом и добавьте результаты, используя results.push(value).В Java вы захотите использовать ArrayList.(Кстати, это очень разные языки.)

0 голосов
/ 11 мая 2011

Ниже описан способ, который я реализовал и помог мне легко и быстро исправить свое решение.

// Создание массива List

List accountList = new ArrayList(); 




for(int k=0;k < counter;k++){
        accountList.add(k, (String)flowCtx.getValueAt("transitId"+m));
}

Итерация цикла и добавление объектов в массив с индексом.

// Получение объекта во время выполнения с помощью индекса

String a = accountList.get(i));
0 голосов
/ 10 ноября 2010

Надеюсь, это имеет смысл.

К сожалению, это не так.

В Java нет смысла создавать переменные на лету.Это чрезвычайно сложно сделать, и как только вы это сделаете, их будет чрезвычайно сложно использовать.(В отличие от этого, это легко сделать в Javascript ...)

Однако это просто означает, что вам нужно делать то, что вы пытаетесь, по-другому.Например, следующее выполняет вычисления в цикле, а затем сохраняет результаты в (существующей) переменной ArrayList:

    List<Integer> results = ArrayList<Integer>();
    while (...) {
        // Do computation ...
        int result = ...
        results.add(result);
    }
    // Now we have all of the results in 'results'

Или, если вы хотите связать каждый из результатов с отдельным именем, вы могли бы сделать что-то вроде этого:

    Map<String, Integer> results = HashMap<String, Integer>();
    while (...) {
        // Do computation ...
        String name = ...
        int result = ...
        results.put(name, result);
    }
...