Java 使用字符串数组元素作为变量名?

Java 使用字符串数组元素作为变量名?,java,arrays,image,swing,imageicon,Java,Arrays,Image,Swing,Imageicon,我正在尝试将许多图片导入一条可见的网格线,以显示为一个条(确切地说是健康条),当损坏发生时,该条会减少(添加一个白色图像来代替条的位置)。因此,我决定不再为10个可能的生命值中的每一个都写代码(更不用说还有其他玩家的统计数据将以相同的格式完成),我决定拼凑一个“for”使用两个if-else语句循环,只要运行状况值大于“循环的“i””的,则尝试使用循环填充每个网格元素。如果玩家恰好在10时达到最大健康值,则图像会略有不同,因此需要第二个“if else”循环。 我的主要问题涉及循环的名称,因为我

我正在尝试将许多图片导入一条可见的网格线,以显示为一个条(确切地说是健康条),当损坏发生时,该条会减少(添加一个白色图像来代替条的位置)。因此,我决定不再为10个可能的生命值中的每一个都写代码(更不用说还有其他玩家的统计数据将以相同的格式完成),我决定拼凑一个“for”使用两个
if-else
语句循环,只要运行状况值大于“循环的
“i”
”的
,则尝试使用循环填充每个网格元素。如果玩家恰好在10时达到最大健康值,则图像会略有不同,因此需要第二个
“if else”
循环。
我的主要问题涉及循环的名称,因为我使用数组作为字符串名称的持有者,我希望成为ImageIcon名称,但我既没有正确地排列代码,也没有找到解释如何使用数组字符串名称作为ImageIcon名称的源代码 下面是循环和数据

String[] array1 ={"hOne","hTwo","hThree","hFour","hFive","hSix","hSeven","hEight","hNine","hTen"};
    String tempY = " ", tempN = " ", tempF = " ", tempNF = " ";
        //row 1, health
        statsPanel.add(stat1);
    for (int i=0; i<=9; i++){
        if ((i+1)<heal){
        tempY=array1[i];
        ImageIcon tempY = new ImageIcon("C:\\Users\\Kunkle\\hea.png");  
        ColorPanel tempYz = new ColorPanel(Color.black, tempY);
        statsPanel.add(tempYz);
            }
        else {
        tempN=array1[i];    
        ImageIcon tempN = new ImageIcon("C:\\Users\\Kunkle\\non.png");  
        ColorPanel tempNz = new ColorPanel(Color.black, tempN);
        statsPanel.add(tempNz);
            }
        if (i==8 && heal==10){
        tempF=array1[i];
        ImageIcon tempF = new ImageIcon("C:\\Users\\Kunkle\\shea.png");  
        ColorPanel tempFz = new ColorPanel(Color.black, tempF);
        statsPanel.add(tempFz);
            }
        else {
        tempNF=array1[i];   
        ImageIcon tempNF = new ImageIcon("C:\\Users\\Kunkle\\shea.png");  
        ColorPanel tempNFz = new ColorPanel(Color.black, tempNF);
        statsPanel.add(tempNFz);
            }
}
String[]数组1={“hOne”、“hTwo”、“hThree”、“hFour”、“hFive”、“hSix”、“HSEEN”、“hEight”、“hNine”、“THEN”};
字符串tempY=“”,tempN=“”,tempF=“”,tempNF=“”;
//第1排,健康
statsPanel.add(stat1);

对于(int i=0;i你不能做你想做的事。Java不是一种可以用变量值代替名称的动态语言,一个la Perl,其中
$x=“a”$$x=3;
导致变量
$a
具有值
3

最接近的方法是使用
Map
将字符串与对象关联。如果要将
ImageIcon
ColorPanel
与名称关联,则需要一个包装器对象来保存对这两个对象的引用,而您需要一个
Map


我会提供一个代码示例,但这需要查看
statsPanel
的代码,您还没有提供。我猜
statsPanel
将是(或包含)我上面提到的
Map

我不知道你在问什么。ImageIcon没有名称。如果你有错误,请清楚地指定它们是什么,以及它们指的是哪一行。不要强迫我们猜测。名称如代码
ImageIcon temp=new ImageIcon(“cat.png”)中的“temp”所示;
,我说每个错误都是ImageIcon声明的行,我试图在其中分配数组的元素。这不是ImageIcon的名称。这是变量的名称。这告诉我错误在哪里,但不是错误是什么。编译器输出错误消息。读取并发布它们。不要忽略它们。哦,天哪逻辑部分不好,我不知道我做不到。我会研究
map
,希望我能让这些循环顺利运行。非常感谢!