java - 修复,使显示可以同时显示十进制数和整数 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 + "/");
}
解决方案
您可能想研究DecimalFormat
,NumberFormatter
和JFormattedTextField
。
您的代码可能如下所示:
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
您现在拥有所有必要的工具。继续使用它们将解决方案放在一起。
推荐阅读
- robotframework - Robotframework - 访问正则表达式匹配组
- css - 如何使用`overflow:auto;`自定义滚动条集?
- php - 关键字'use'如何在php(laravel)中工作
- reactjs - android Wix-Navigation 中图标的 React-native 问题,在 iOS 中运行良好
- html - 如何使用 Tailwind 修改 svg 图标颜色
- java - (Java) 变量名必须匹配模式?
- puppeteer - 如何在 puppeteer 中获取文本元素
- html - HTML GUI 生成器
- java - 为什么我的变量没有在 Java 中解析?
- python - 从 tf.Tensor 更改值