我是java的初学者。我目前的任务是将之前的代码转换为使用GUI的代码。这是以前的代码。
public class Tax {
public static void main(String[] args) {
//Variables
double RealHouseValue;
double AssessedValueRate;
int TaxDistrict;
double AssessedValue;
double PropertyTaxRate;
//Insert applicable numbers
RealHouseValue = 300000;
AssessedValueRate = .35;
TaxDistrict = 200;
AssessedValue = RealHouseValue*AssessedValueRate;
PropertyTaxRate = .03;
System.out.println("Actual House Value: $" + RealHouseValue); //Displays current house value
System.out.println();
System.out.println("Assessed Value Rate is: " + AssessedValueRate + " for tax district: " + TaxDistrict);
System.out.println();
System.out.println("Assesed Value: $" + AssessedValue);
System.out.println();
System.out.println("Local Property Tax Rate: " + PropertyTaxRate);
System.out.println();
System.out.println("Property Tax Due This Year: $" + AssessedValue*PropertyTaxRate);
我想要做的是让一个盒子询问用户实际的房屋价值,或者“E”退出。当用户输入他们的房屋价值时,我希望它进行上述计算并输出他们应付的年度房产税。如果他们按“E”,我想打印出“再见”,然后停止运行。这是我到目前为止所得到的:
import javax.swing.JOptionPane; // Needed for the Scanner class
public class taxGui {
public static void main(String[] args) {
String custInput;
double realHouseValue;
double AssessedValueRate;
double AssessedValue;
double PropertyTaxRate;
//Insert applicable numbers
realHouseValue = 0.0;
AssessedValueRate = .35;
AssessedValue = realHouseValue*AssessedValueRate;
PropertyTaxRate = .03;
custInput = JOptionPane.showInputDialog("Enter your house value, or press 'E' to exit.");
realHouseValue = custInput.charAt(0);
if (realHouseValue > 0)
{
JOptionPane.showMessageDialog(null, "Your property tax due this year is: " + AssessedValue*PropertyTaxRate);
realHouseValue= custInput.charAt(0);
}
}
}
我试图让realHouseValue等于用户输入而不是声明的0.0。我在这个类,面向中间对象编程方面度过了一段难忘的时光。我试过问我的教授问题,但他的答案正好在我脑海里。任何帮助,将不胜感激。对不起,如果格式化或任何东西都关闭,这是我的第一篇文章。谢谢你的期待!
- 查尔斯
答案 0 :(得分:0)
我在代码中看到至少有几个问题:
realHouseValue = custInput.charAt(0);
上面一行是用户输入的第一个字母,并认为是realHouseValue
。这是你的意图吗?
您应该使用Double.parseDouble(realHouseValue);
来获取用户输入的实际值。
要取消操作,用户只需单击输入对话框上的Cancel
按钮即可。因此,您将获得null
作为分配给custInput
的返回值。您可以简单地将此值与“退出”进行比较,而不是与“E”进行比较。
AssessedValue = realHouseValue*AssessedValueRate;
即使您接受用户的输入,也会发生上述分配。因此,它将始终显示程序启动时初始化的不变值。将其更改为函数/方法,例如:
double calculateAssessedValue(double realHouseValue, doubld AssesedValueRate) {
return realHouseValue*AssessedValueRate;
}
然后可以调用它将其输出给用户:
JOptionPane.showMessageDialog(null, "Your property tax due this year is: " + calculateAssessedValue(AssessedValue, PropertyTaxRate));
看看你是否可以纠正这些错误,让你朝着正确的方向前进。
希望这有帮助!