gpt4 book ai didi

java - 我的 Jcombobox 似乎正在工作,但是当我在其中进行任何选择时,程序似乎没有注册更改

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:16 24 4
gpt4 key购买 nike

我正在为 CS 类(class)制定税务计划。我正在使用 cleanbeans 并用 java 进行编程。我是编程新手。我的代码似乎正常工作,但是当我从 JComboBox 中选择“单个”以外的选项时,数学并没有按照应有的方式改变。它继续使用“单个”选择中的数学。我想知道如何解决这个问题。另外,有一个随机的 2000 美元似乎在数学中 float ,所以我的计算有问题,但对于我的生活,我无法弄清楚是什么。当用户输入一个较低的 ' “应税收入”的计算结果始终比应有的水平高出 2000 美元,因此我减去了 2000 美元以使其正常工作。但是,当用户输入大量“应税收入”时,数学结果总是准确的,因此我减去了 2000美元错误。如果有人能看一下我的代码并帮助我,我将不胜感激。PS,因为我正在调试程序,所以只填写了“单例”和“已婚联合备案”。

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 filingStatus;

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(jtfIncome = new JTextField(8));
p.add(jcb = new JComboBox(fsChoice));
p.add(info = new JLabel("Enter taxable income "
+ "than pick filing status"));
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();
}
});
}

public void itemStateChanged(ItemEvent e)
{
income = Integer.parseInt(jtfIncome.getText());

if (e.getStateChange() == ItemEvent.SELECTED)
{
filingStatus = (String) jcb.getSelectedItem();
System.out.println(filingStatus);
switch (filingStatus)
{
case "Single":
if (income <= 8350)
{
tax = income * 0.10;
}
if (income >= 8351 && income <= 33950)
{
tax = income * 0.15;
}
if (income >= 33951 && income <= 82250)
{
tax = income * 0.25;
}
if (income >= 82251 && income <= 171550)
{
tax = income * 0.28;
}
if (income >= 171551 && income <= 372950)
{
tax = income * 0.33;
} else
{
tax = income * 0.35;
}
break;

case "Married filing jointly":
if (income <= 16700)
{
tax = income * 0.10;
}
if (income >= 16701 && income <= 67900)
{
tax = income * 0.15;
}
if (income >= 67901 && income <= 137050)
{
tax = income * 0.25;
}
if (income >= 137051 && income <= 208850)
{
tax = income * 0.28;
}
if (income >= 208851 && income <= 372950)
{
tax = income * 0.33;
} else
{
tax = income * 0.35;
}
break;
}
}
}

public void calculate()
{
jtfTax.setText((int) (tax - 2000) + "");
}

}

最佳答案

我收到错误,例如,输入 4000,税费为 1400,即 4000 的 35%,因此看起来像是 if 的问题。您可以通过两种方式解决此问题,第一种是更改 if

if (income <= 8350){
tax = income * 0.10;
break;
}

在每个(不要)中,另一个选项只是放置一个

else if (income > 372950)

而不是最后只有一个 else 。这解决了你所遇到的奇怪的 2000 美元问题拥有。

关于java - 我的 Jcombobox 似乎正在工作,但是当我在其中进行任何选择时,程序似乎没有注册更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22542660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com