繁体   English   中英

有什么办法可以 output 变量名而不是值? [JAVA]

[英]Is there any way I can output the variable name instead of the value? [JAVA]

例如,我有一个 integer 变量列表

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

我有一个数组:

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

和我 output 总案件的价值,这将是:

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:");

Output:

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

不过我也想output这个名字。

示例:(CASENAME 只是此示例的占位符。我想使用 CaseValue[].NAME,即使它不存在,因为它是一个示例)

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

我期望并希望 output 成为:

CLUTCH_CASE: 8
CS20: 6
DANGER_ZONE_CASE: 6

有什么办法可以将 output 的名称命名为 integer 变量?

Java中没有访问变量名的命令。

您可以使用 map(如其他答案中所述),但我还想提出一种简单的可能性,如果没有 Java 的高级功能,这种可能性是可能的。

您可以执行以下操作:

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

之后,您可以执行以下操作:

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

使用 Map。

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

我仍然不完全理解你的代码。 所以不能给你一个完整的工作片段。 然而,我添加了一个关于如何使用 map 的片段。 将密钥作为您想要的名称及其对应的值存储在 map 的该密钥中。

You need to use java.lang.Class and its getFields() method to return an array of java.lang.reflect Field[] class object Below will give you an idea of how, go take a look in the API docs for a better更合适的方法集来使用 List 或 Set 设计流程以使用 contains() 方法,以便您可以将其放入 class 并在您需要时在程序中调用。

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();

您可以使用 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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM