我正在为CS类创建一个税项目。我正在使用netbeans。我的项目完全正常工作,除了我总是得到的税收返回值是0.0。我是Java新手。我认为问题出在我的收入"变量。 用户输入他们的应税收入,我取用户输入的字符串并将其解析成一个整数并称之为"收入"。然后程序检查"收入"查看是否大于或小于某些值,以查看用户所在的税率范围。税率范围受用户组合框选择"填充状态"的影响。 到目前为止,我的程序只有最小的税率和单一的填充状态用于调试目的...一旦我得到这个代码工作,我应该能够相当容易地填写其余部分。 我想知道是否有人可以查看代码,看看我错过了什么。我很难将组合框与用户jtextfield条目连接起来进行计算。我不确定我的问题是在我的阵列中,在我的收入"变量,或其他地方。我花了很多时间浏览书籍和java教程。如果您能看一眼并提供帮助,那将不胜感激:)
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
public class IncomeTax2 extends JFrame implements ItemListener
{
private JTextField jtfIncome;
private JTextField jtfTax;
private JButton jbCalculate;
private JComboBox jcb;
private JLabel info;
private String[] fsChoice =
{
"", "Single", "Married filing jointly", "Married filing separately",
"Head of Household"
};
int income;
double tax;
private String fillingStatus;
public static void main(String[] args)
{
JFrame frame = new IncomeTax2();
frame.pack();
frame.setTitle("Income Tax Calculator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public IncomeTax2()
{
JPanel p = new JPanel();
p.setLayout(new GridLayout(3, 2, 5, 5));
p.setBorder(new EmptyBorder(5, 5, 5, 5));
p.add(jcb = new JComboBox(fsChoice));
p.add(jtfIncome = new JTextField(8));
p.add(info = new JLabel("Pick filling status and "
+ "enter taxable income"));
p.add(jbCalculate = new JButton("Calculate"));
p.add(jtfTax = new JTextField(16));
jtfTax.setEditable(false);
setLayout(new BorderLayout());
jtfTax.setHorizontalAlignment(JTextField.RIGHT);
add(p, BorderLayout.CENTER);
jtfIncome.addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
char c = e.getKeyChar();
if (!(Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) ||
c == KeyEvent.VK_DELETE || c == KeyEvent.VK_ENTER))
{
Toolkit.getDefaultToolkit().beep();
System.out.println("User must enter a digit.");
e.consume();
}
}
});
jcb.addItemListener(this);
jbCalculate.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
calculate();
}
});
jtfIncome.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String inputStr = jtfIncome.getText();
income = Integer.parseInt(inputStr);
}
});
}
public void itemStateChanged(ItemEvent e)
{
if (e.getStateChange() == ItemEvent.SELECTED)
{
fillingStatus = (String) jcb.getSelectedItem();
switch (fillingStatus)
{
case "Single":
if (income <= 8350)
{
tax = income * 0.10;
System.out.println("case[1]");
System.out.println("Tax = " + tax);
}
;
break;
}
}
}
public void calculate()
{
jtfTax.setText(((int)(tax * 100) / 100.0 + ""));
}
}
答案 0 :(得分:0)
收入ActionListener
的{{1}}依赖于用户按ENTER设置JTextField
。如果没有发生那么分配
income
将生成等于tax = income * 0.10;
的值tax
。
确保0
的作业发生在income
ItemListener
在进行税务计算之前。