首页 > 解决方案 > 修复,使显示可以同时显示十进制数和整数 java

问题描述

我对编程很陌生,我正在尝试制作一个计算器。我在 JFrame 中执行此操作,并且我希望能够在启动程序时使我的显示能够显示小数点数字或整数,这取决于计算。

例如,5/2 = 2.5(不是 2),4/2 = 2(不是 2.0)或 3 + 4 = 7(不是 7.0)。根据结果​​,它应该能够做到这两点。非常感谢您的帮助,谢谢。

public void arithmetic_operation () {        
    switch (calculation) {
        case 1: 
            ans = num + Double.parseDouble(txfText.getText());
            txfText.setText(Double.toString(ans));
            break;
        case 2: 
            ans = num - Double.parseDouble(txfText.getText());
            txfText.setText(Double.toString(ans));
            break;
        case 3: 
            ans = num * Double.parseDouble(txfText.getText());
            txfText.setText(Double.toString(ans));
            break;
        case 4: 
            ans = num / Double.parseDouble(txfText.getText());
            txfText.setText(Double.toString(ans));
            break;
    }
}

private void btnDivisionActionPerformed(java.awt.event.ActionEvent evt) {                                        
    num = Double.parseDouble(txfText.getText());
    calculation = 4;
    txfText.setText("");
    lblRes.setText(num + "/");
} 

标签: javaswingintegerdouble

解决方案


您可能想研究DecimalFormat,NumberFormatterJFormattedTextField

您的代码可能如下所示:

String formatPattern = "####.##"
NumberFormatter numberFormatter = new NumberFormatter( new DecimalFormat( formatPattern ) );
formatter.setValueClass( Double.class );
DefaultFormatterFactory formatterFactory = new DefaultFormatterFactory( numberFormatter );
JFormattedTextField formattedTextField = new JFormattedTextField();

特别注意formatPattern参数。这定义了格式化字符串时应用的模式。此特定模式将在小数点前最多显示四位数字,在小数点后最多显示两位数。剩余的零将被切断,翻译如下:

  • 3.14-->3.14
  • 3.14159-->3.14
  • 3.0-->3

另请注意,.此模式中的 不是文字点,而是取决于语言环境的小数分隔符。

如果您想定义自己的模式,请查看文档:

https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html


您现在拥有所有必要的工具。继续使用它们将解决方案放在一起。


推荐阅读