Есть ли способ вывести имя переменной вместо значения? [ЯВА] - PullRequest
0 голосов
/ 30 мая 2020

, например, у меня есть список целочисленных переменных

int CLUTCH_CASE = 8;
int CS20 = 6;
int DANGER_ZONE_CASE = 6;
int TOTAL_CASE = 0;

У меня есть массив:

int CaseValue[] = {CS20, CLUTCH_CASE, DANGER_ZONE_CASE};

, и я вывожу значение общего количества случаев, которое будет :

for (int counter=0;counter<CaseValue.length;counter++) {
    TOTAL_CASE += CaseValue[counter];
}
System.out.println("You have "+CaseValue.length+" CSGO Cases");
System.out.println("You have a total of "+TOTAL_CASE+" CSGO Cases:");

Вывод:

You have 3 CSGO Cases
You have a total of 20 CSGO Cases:

но я также хочу вывести имя.

Пример: (CASENAME - это просто заполнители для этого примера. Я хотел использовать CaseValue []. NAME даже не существует, поскольку это пример)

for (int counter2=0;counter2<CaseValue.length;counter2++) {
    System.out.println(CASENAME+": "+CaseValue[counter2]);
}

Мои ожидаемые и желаемые результаты быть:

CLUTCH_CASE: 8
CS20: 6
DANGER_ZONE_CASE: 6

Есть ли способ вывести имя целочисленной переменной?

Ответы [ 4 ]

2 голосов
/ 30 мая 2020

В Java нет команды для доступа к имени переменной.

Вы можете использовать карту (как указано в других ответах), но я также хотел бы представить простую возможность, которая возможна без дополнительных функций Java.

Вы можете сделать следующее:

String[] caseName = {"CS20", "CLUTCH_CASE", "DANGER_ZONE_CASE"};

После этого вы можете сделать:

for (int i=0; i<CaseValue.length; i++) {
    System.out.println(caseName[i] + ": " + CaseValue[i]);
}
0 голосов
/ 30 мая 2020

Вам необходимо использовать java .lang.Class и его метод getFields () для возврата массива объекта класса java .lang.reflect Field []. Ниже вы узнаете, как go принимает посмотрите в документации API более подходящий набор методов для разработки процесса с помощью List или Set для использования метода contains (), чтобы вы могли поместить его в класс и вызывать, когда захотите, в программе.

import java.lang.Class;
import java.lang.reflect.*;

Field[] varFset = ((java.lang.Class)this).getFields();
// compare names processing code over the array here
String varname = varFset[x].getName();
0 голосов
/ 30 мая 2020

Вы можете использовать HashMap.

enum CaseType {
   CLUTCH_CASE,
   CS20,
   DANGER_ZONE_CASE;
}
Map<CaseType, Integer> map = new HashMap<>(3);
map.put(CaseType.CLUTCH_CASE, 8);
map.put(CaseType.CS20, 6);
map.put(CaseType.DANGER_ZONE_CASE, 6);
map.forEach((key, value) -> System.out.println(key.name() + ": " + value));
0 голосов
/ 30 мая 2020

Используйте карту.

Map<String, Integer> ma = new Hashmap()
for (int counter=0;counter<CaseValue.length;counter++) {
    TOTAL_CASE += CaseValue[counter];
    ma.put(<your_key>, <your_value>)
}

Я все еще не понимаю ваш код полностью. Поэтому не могу дать вам полный рабочий фрагмент. Однако я добавил отрывок о том, как вы могли бы использовать карту. Сохраните ключ как желаемое имя и соответствующее ему значение в этом ключе карты.

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