【问题标题】:double comparing using if from JLabel使用 JLabel 中的 if 进行双重比较
【发布时间】: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


【解决方案1】:

改变

double.valueOf() 

double.parseDouble()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2016-03-08
    • 2011-05-25
    • 1970-01-01
    相关资源
    最近更新 更多