2016-04-14 5 views
-1

У меня есть массив Java типа двойной с именами переменных, используемых для хранения значений, как так:Java - получить имя переменной из двухслойного массива

double [] countArray = {teaCount, hotMealCount, drinkWaterCount, phoneCallCount}; 

Ищу напечатать имена переменных, выполненной по его индексу ,

например. Если я запрошу countArray[0], он вернет teaCount вместо двойного, который хранится.

+2

Я думаю, что карта лучше подходит для этой проблемы. –

+4

Использование карты, Java не работает таким образом – MadProgrammer

ответ

4

Если вы хотите имена, которые нужно хранить эти

String[] countArray = {"teaCount", "hotMealCount", "drinkWaterCount", "phoneCallCount"}; 

Хотя, скорее всего, вы хотел Map<String, Double>, такие как

Map<String, Double> map = new LinkedHashMap<>(); 
map.put("teaCount", teaCount); 
map.put("hotMealCount", hotMealCount); 
map.put("drinkWaterCount", drinkWaterCount); 
map.put("phoneCallCount", phoneCallCount); 

хранит как имя A nd значение, которое оно имеет.

2

Что вы хотите сделать, с этим подходом невозможно. Решение состояло бы в том, чтобы иметь Map<String, Double>, где вы храните имя в качестве ключа, а счетчик - как значение в Map.

Фактически имя переменной временно временно, и вы не можете получить доступ к имени позже. И если вы добавляете что-то в массив, вы не добавляете переменную по имени в массив, а в местоположение значения.

0

Yor хранят строки, а не двойные значения в массиве.

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

System.out.println (countArray [0]);

И это будет печатать teaCount.

Надеюсь, что он работает.

+0

Это не то, что он просит. Прочтите вопрос еще раз. У него есть массив, хранящий двойные переменные, и он хочет получить имя переменной, хранящейся в определенном индексе своего массива. – goncalopinto

3

Вы не можете сделать это так, как вы хотите, но Map coould быть ваше решение:

Map<String, Double> count = new HashMap<String, Double>(); 
count.put("teaCount", 1.5); 
count.put("hotMealCount", 2.5); 
// etc 

count.get("teaCount"); // 1.5 
+0

просто примечание: вы не можете использовать double в контейнерах, вам нужно использовать Double (со всеми бокс/unboxing). Библиотека, которая делает это http://trove.starlight-systems.com/ – Exceptyon

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