在Java中从字符串值调用/使用变量?
所以我有一系列名为card1到card20的jbutton。我想根据是否满足特定条件来更改图标,因此我想做一个循环,并将每个图标称为(“card”+I)或类似的东西,而不是为每个按钮编写单独的if语句。我正在使用的代码已经添加到下面,但是有没有一种方法可以循环这个if语句,这样代码的每个循环都会影响不同的卡在Java中从字符串值调用/使用变量?,java,variables,Java,Variables,所以我有一系列名为card1到card20的jbutton。我想根据是否满足特定条件来更改图标,因此我想做一个循环,并将每个图标称为(“card”+I)或类似的东西,而不是为每个按钮编写单独的if语句。我正在使用的代码已经添加到下面,但是有没有一种方法可以循环这个if语句,这样代码的每个循环都会影响不同的卡 private void cardreset() { if (cardmatch[1] == 0) { card1.setIcon(back); } } 这
private void cardreset() {
if (cardmatch[1] == 0) {
card1.setIcon(back);
}
}
这就是我想做的,但是预先将所有“card”变量添加到数组中会产生非法的前向引用错误
private void cardreset() {
for(int i=1; i<=20; i++){
if (cardmatch[i] == 0) {
card[i].setIcon(back);
}
}
}
private void cardreset(){
对于(inti=1;i理论上你可以用它来做,但这是一个非常糟糕的做法
相反,你应该使用a和你的地图来引用它们
只是为了好玩,这里介绍了如何进行反思,但我还是强烈建议不要这样做
for (int i = 0; i < 4; i ++) {
Field f = MyClass.class.getDeclaredField("card" + i);
System.out.println(f.get(myClass));
}
for(inti=0;i<4;i++){
字段f=MyClass.class.getDeclaredField(“卡片”+i);
System.out.println(f.get(myClass));
}
理论上你可以用它来做,但这是一个非常糟糕的做法
相反,你应该使用a和你的地图来引用它们
只是为了好玩,这里介绍了如何进行反思,但我还是强烈建议不要这样做
for (int i = 0; i < 4; i ++) {
Field f = MyClass.class.getDeclaredField("card" + i);
System.out.println(f.get(myClass));
}
for(inti=0;i<4;i++){
字段f=MyClass.class.getDeclaredField(“卡片”+i);
System.out.println(f.get(myClass));
}
理论上你可以用它来做,但这是一个非常糟糕的做法
相反,你应该使用a和你的地图来引用它们
只是为了好玩,这里介绍了如何进行反思,但我还是强烈建议不要这样做
for (int i = 0; i < 4; i ++) {
Field f = MyClass.class.getDeclaredField("card" + i);
System.out.println(f.get(myClass));
}
for(inti=0;i<4;i++){
字段f=MyClass.class.getDeclaredField(“卡片”+i);
System.out.println(f.get(myClass));
}
理论上你可以用它来做,但这是一个非常糟糕的做法
相反,你应该使用a和你的地图来引用它们
只是为了好玩,这里介绍了如何进行反思,但我还是强烈建议不要这样做
for (int i = 0; i < 4; i ++) {
Field f = MyClass.class.getDeclaredField("card" + i);
System.out.println(f.get(myClass));
}
for(inti=0;i<4;i++){
字段f=MyClass.class.getDeclaredField(“卡片”+i);
System.out.println(f.get(myClass));
}
您可以将它们放在一个数组中,并以这种方式修改它们
JButton cards[] = { card1, card2, ..., card20 };
然后,当您要修改所有图标时:
if (condition) {
for (JButton card : cards)
card.setIcon(...);
}
或修改特定图标(如每隔一个):
for(int i=0;i
您可以将它们放在一个数组中,并以这种方式修改它们
JButton cards[] = { card1, card2, ..., card20 };
然后,当您要修改所有图标时:
if (condition) {
for (JButton card : cards)
card.setIcon(...);
}
或修改特定图标(如每隔一个):
for(int i=0;i
您可以将它们放在一个数组中,并以这种方式修改它们
JButton cards[] = { card1, card2, ..., card20 };
然后,当您要修改所有图标时:
if (condition) {
for (JButton card : cards)
card.setIcon(...);
}
或修改特定图标(如每隔一个):
for(int i=0;i
您可以将它们放在一个数组中,并以这种方式修改它们
JButton cards[] = { card1, card2, ..., card20 };
然后,当您要修改所有图标时:
if (condition) {
for (JButton card : cards)
card.setIcon(...);
}
或修改特定图标(如每隔一个):
for(int i=0;i
您的要求不太清楚。而且您也没有提供任何代码来帮助。如果做出其他假设,您甚至可以依赖容器中JButton控件的顺序(该控件将像数组一样),而不是创建单独的数组。但这是同一个想法:使用“动态变量名”。你所说的非法正向引用
错误是什么意思?显示足够的代码来重现问题。你问的问题并不清楚。你也没有给出代码来帮助。你可能会重复,甚至可以依赖于容器中JButton控件的顺序(这将像一个数组一样),而不是创建一个单独的数组。但它的思想是一样的:使用数组来处理“动态变量名”“。你所说的非法转发引用
错误是什么意思?显示足够的代码来重现问题。你的要求不是很清楚。而且你也没有给出代码来帮助。可能的重复甚至可以依赖于容器中JButton控件的顺序(这将像一个数组一样),而不是创建一个单独的数组。但这是相同的想法:使用。你所说的非法转发引用是什么意思?
错误?显示足够的代码来重现问题。你的要求不太清楚。而且你没有给出代码来帮助。可能的重复甚至可以依赖于容器中JButton控件的顺序(该控件的行为类似于数组),如果做出其他假设,而不是创建一个单独的数组。但这是相同的想法:使用a来处理“动态变量名”。你说的非法正向引用错误是什么意思?显示足够的代码来重现这个问题。我同意这个建议:-)+1Okay,我正在尝试这样做,但我得到了一个“非法转发引用”错误。我认为这与程序中稍后声明的按钮变量有关。有什么建议吗?是的,您希望将其声明为JButton卡[]=new JButton[20]
,然后在程序中将其设置为card[0]=new JButton(…)
,以及card[1]=新的JButton(…)
等。代替card0=…
等。我同意这个建议:-)+1Okay,我正在尝试这样做,但我得到了一个“非法转发引用”“每个按钮都有错误。我认为这与程序中稍后声明的按钮变量有关。有什么建议吗?是的,您希望将其声明为JButton cards[]=new JButton[20]
,然后在程序中将其设置为。”