【发布时间】:2014-11-06 07:38:20
【问题描述】:
我一直试图弄清楚我有一个 JLabels 数组和一个双精度数组,当我使用 if 语句时,当值相同时它不会抛出,
public static int notobtn(int in ) {
int returnVal = 0;
int no = 0;
for (no = 0; no < 26; no++) {
System.out.println("----------------------");
System.out.println("ScrambleAmt = " + Gui.ScrambleAmt[ in ]);
System.out.println("number = " + Double.valueOf(Gui.lbls[no].getText().replaceAll("[^\\w]", "")));
System.out.println("----------------------");
if (Gui.ScrambleAmt[ in ] == Double.valueOf(Gui.lbls[no].getText().replaceAll("[^\\w]", ""))) {
returnVal = no;
System.out.println("WINNER");
}
}
return returnVal;
}
Gui.lbls[] 如下(在它们前面放了一个 $ 符号,这就是为什么我要全部替换)
Double[] labelamt = {
0.50, 1.0, 2.0, 5.0, 10.0, 20.0, 50.0, 100.0, 150.0,
200.0, 250.0, 500.0, 750.0, 1000.0, 2000.0, 3000.0, 4000.0, 5000.0, 10000.0,
15000.0, 20000.0, 30000.0, 50000.0, 75000.0, 100000.0, 200000.0
};
scrambleAmt[] 也是一个具有完全相同数字的双数组,仅在每次程序运行时打乱,控制台打印出所有数字,但是当它到达它们相等的数字时,它不会打印“赢家”和returnVal 保持设置为 0。
如果有人可以帮助我,我认为这与解析 JLabel 值有关,但我会非常感激 :D 提前非常感谢
piemansam5
【问题讨论】:
-
我认为您对标签中双精度值的解析方法不正确。尝试不同的正则表达式。
-
它很好地删除了 $ 符号,当我打印值时它只是数字和小数点,所以我很确定这一切都很好,但无论哪种方式我都可以获取一些正则表达式我会很感激的
-
我尝试使用 [^0-9.,] 并且成功了。它可以改进。
-
我还是有问题,if 语句仍然不会抛出:/ 那是使用新的正则表达式
标签: java if-statement for-loop double jlabel