Java: использовать строковый массив в качестве держателя имени переменной, а затем использовать переменные в другом месте через индекс массива - PullRequest
1 голос
/ 29 января 2012

Я пытаюсь использовать строковый массив в качестве держателя различных имен переменных, а затем использовать инкрементный индекс массива для вызова этих переменных.Поэтому я создаю строковый массив и называю его frac[], а затем в каждом индексе добавляю строку frac1, frac2, frac3 и т. Д., Причем каждая строка имеет свой собственный индекс.Переменные frac1,2,3 и т. Д.уже были созданы индивидуально, и теперь я хочу вызвать эти переменные, чтобы использовать их в другой области моего кода, но я хочу использовать массив, чтобы я мог циклически перемещаться по различным индексам (переменным) со счетчиком. Как я могу сказать Java использовать конкретный индекс массива строк в качестве имени переменной?

Код массива для ввода 5 уже существующих имен переменных:

for (int w = 0; w < 5; w++){
    frac[w] = "frac" + (w + 1);
}

Где я хочу использовать индекс массива (frac [z]):

for (int z = 1; z < 2; z++){
    System.out.println("Please enter your numerator for fraction # " + z + ": ");
    n = keyboard.nextInt();
    System.out.println("Please enter your denominator for fraction # " + z + ": ");
    d = keyboard.nextInt();
    frac[z] = new Fraction (n,d);
}

Спасибо за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 29 января 2012

Если я правильно понимаю, какова ваша цель, вы рассматривали возможность использования java.util.Map? Есть некоторые реализации (TreeMap, HashMap ....)

Это простая структура данных, в которой вы определяете запись значения ключа:

TreeMap<String,Fraction> frMap = new TreeMap<String,Fraction>();
frMap.put("fraz1",new Fraction(1,2));
Fraction f = frMap.get("fraz1");
0 голосов
/ 29 января 2012

не совсем понятно, какова ваша цель, но вы можете использовать java отражение, чтобы получить значение свойства из его имени:

пример использования отражения:

public class SomeClass {
  public int a;

  public static void main(String [] args) {
    SomeClass s = new SomeClass();
    s.a = 5;
    try {
      int b = (Integer) SomeClass.class.getField("a").get(s);
      System.out.println(b);
    } catch  (Exception e)  {
      e.printStackTrace();
    } 
  }
}

обратите внимание, что в большинстве случаев(некоторые сказали бы) использование отражения отмечает плохой дизайн.

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