Java 是否有任何方法可以输出变量名而不是值?[爪哇]
例如,我有一个整数变量列表Java 是否有任何方法可以输出变量名而不是值?[爪哇],java,arrays,Java,Arrays,例如,我有一个整数变量列表 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
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:");
但是,我还想输出名称
例如:
CASENAME只是本例的占位符。我想使用CaseValue[]。NAME,因为这是一个示例,所以它甚至不存在
for (int counter2=0;counter2<CaseValue.length;counter2++) {
System.out.println(CASENAME+": "+CaseValue[counter2]);
}
有没有办法输出整型变量的名称?使用映射
Map<String, Integer> ma = new Hashmap()
for (int counter=0;counter<CaseValue.length;counter++) {
TOTAL_CASE += CaseValue[counter];
ma.put(<your_key>, <your_value>)
}
我还是不完全理解你的代码。因此,无法提供完整的工作片段。不过,我添加了一个关于如何使用地图的片段。将键作为所需的名称及其对应的值存储在映射的该键中。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]);
}
您可以使用HashMap 枚举案例类型{ 离合器箱, CS20, 危险区案例; } Map Map=newhashmap3; map.putCaseType.离合器外壳,8; map.putCaseType.CS20,6; map.putCaseType.DANGER_ZONE_CASE,6; map.forEachkey,value->System.out.printlkey.name+:+value;
您需要使用java.lang.Class及其getFields方法返回java.lang.reflect Field[]类对象的数组 下面将向您介绍如何在API文档中查找更好、更合适的方法集,以使用列表或集合来设计流程,从而使用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();
最好使用LinkedHashMap来保留顺序。最好使用LinkedHashMap来保留顺序。出于某种原因,所有使用hashmap作为解决方案的答案都被否决了。我不知道为什么?因为他们没有保持输出的顺序。这是要求吗??据我所知,他是juzt印刷公司。是的,这是一项要求。没有明确地写下来,但是所有的示例输出都是按照声明顺序进行的。这根本不是使用反射的情况。请不要在这些基本任务中使用反射。
for (int i=0; i<CaseValue.length; i++) {
System.out.println(caseName[i] + ": " + CaseValue[i]);
}
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();