如何获取JTextField文本并拆分至变量计算?解决结果恒为0.0问题
问题分析与解决
你的代码里获取第一个数字(zahl1)的逻辑完全错误,这是导致结果始终为0.0的核心原因:
- 当前代码用
calc.substring(calc.lastIndexOf("-") + 2)来取zahl1,意味着你从减号的后两位开始截取字符串,大概率会得到空字符串或无效内容,解析成double后结果为0,减法自然输出0.0。 - 正确的做法是截取从字符串开头到减号位置的内容作为第一个数字。
修正后的减法代码
else if (action.equals("-")) { String calc = TextField.getText(); // 获取减号的位置 int minusIndex = calc.lastIndexOf("-"); // 截取第一个数字:从开头到减号位置 String looknumberbefore = calc.substring(0, minusIndex); double zahl1 = Double.parseDouble(looknumberbefore); // 截取第二个数字:从减号后一位到结尾 String lookfornumber = calc.substring(minusIndex + 1); double zahl2 = Double.parseDouble(lookfornumber); erg = zahl1 - zahl2; answer = String.format("%.1f - %.1f = %.2f", zahl1, zahl2, erg); TextField.setText(answer); }
额外建议
- 增加输入合法性校验:先判断
minusIndex是否大于0(确保存在减号且前面有有效数字),避免parseDouble抛出异常。 - 如果需要支持连续计算(比如"10-5-3"),还要进一步调整拆分逻辑,当前代码优先保证两个数字的减法正常运行。
内容的提问来源于stack exchange,提问作者AlexanderR
相关产品推荐
相关产品推荐

