Java 如何通过JTextfield输入添加int
我的代码运行良好,除了我无法获得准确的totalBill!下面是我的代码,问题区域在按钮1操作内。我相信我的数学很简单,但如果我输入:100(支出金额)15(总税额)和10(总小费金额)则得出123,只差2个是正确的。在我的一生中,我尝试过分数数学,我只是被难倒了,我确信这是一件相对容易的事情,我只是看不到它。非常感谢您的帮助Java 如何通过JTextfield输入添加int,java,Java,我的代码运行良好,除了我无法获得准确的totalBill!下面是我的代码,问题区域在按钮1操作内。我相信我的数学很简单,但如果我输入:100(支出金额)15(总税额)和10(总小费金额)则得出123,只差2个是正确的。在我的一生中,我尝试过分数数学,我只是被难倒了,我确信这是一件相对容易的事情,我只是看不到它。非常感谢您的帮助 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class unit6_Q2 extends JFrame {
JPanel main_1 = new JPanel();
JLabel main_2 = new JLabel();
JTextField question_1 = new JTextField("Enter amount here",30);
JTextField question_2 = new JTextField("Enter tax percent here", 30);
JTextField question_3 = new JTextField("Enter tip amount here", 30);
JButton button_1 = new JButton("Calculate");
public unit6_Q2() {
setTitle("Tutorial");
setVisible(true);
setSize(400,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
main_1.add(question_1);
main_1.add(question_2);
main_1.add(question_3);
//if I want the use of enter on each TextField
/*
question_1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String input_1 = question_1.getText();
}
});
question_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String input_2 = question_2.getText();
}
});
question_3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String input_2 = question_3.getText();
}
}); */
main_1.add(button_1);
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String input_1 = question_1.getText();
String input_2 = question_2.getText();
String input_3 = question_3.getText();
int amountSpent = Integer.parseInt(input_1);
int amountTaxed = Integer.parseInt(input_2);
int amountTipped = Integer.parseInt(input_3);
int totalTax = (int)(amountSpent * (amountTaxed*(1/100.0f)));
int totalTipped =(int)(amountSpent * (amountTipped*(1/100.0f)));
int totalBill = totalTipped + totalTax + amountSpent;
JOptionPane.showMessageDialog(null, totalBill);
}
});
add(main_1);
}
public static void main(String[] args) {
unit6_Q2 display = new unit6_Q2();
}
}
这是因为您正在截断分形数据
int totalTax = (int)(amountSpent * (amountTaxed*(1/100.0f)));
int totalTipped =(int)(amountSpent * (amountTipped*(1/100.0f)));
使用Math.round()
而不是(int)
强制转换,或者简单地坚持使用浮点
您的做法是,如果假设totalTax为1.9,则由于int cast,它将变为1。提示,为了解决此类问题,通常有助于将它们“减少”到其核心。在你的例子中:计算。绝对没有必要增加UI复杂性。你看
public class Test {
public static void main(String[] args) {
int amountSpent = Integer.parseInt("100");
int amountTaxed = Integer.parseInt("15");
int amountTipped = Integer.parseInt("10");
int totalTax = (int)( amountSpent * amountTaxed/100.0f );
System.out.println(totalTax);
int totalTipped =(int)(amountSpent * amountTipped/100.0f);
System.out.println(totalTipped);
int totalBill = totalTipped + totalTax + amountSpent;
System.out.println(totalBill);
}
}
它只起作用(因为它避免了从float到int的“中间”转换;这会产生舍入误差)
因此,我的答案更多的是一种解决此类问题的策略:
分配需要UI。但我很感激。我并不是说你要避开用户界面。关键是:你不需要UI代码来测试你的“数学”代码。相反,在你知道如何做基础工作之前,试图建造你的“房子”,只会让一切变得更加复杂@他说的不是作业,而是你问题的调试。通常最好是减少代码,简化代码以找到其根源。注意他的话,并投票支持他的答案,因为它是有帮助的,如果不是现在,它将在未来帮助你。这解决了这个问题。几分钟后将被标记为正确答案。