如何让java通过GUI保存用户输入?

时间:2017-06-12 04:54:47

标签: java eclipse user-interface

我是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。我在这个类,面向中间对象编程方面度过了一段难忘的时光。我试过问我的教授问题,但他的答案正好在我脑海里。任何帮助,将不胜感激。对不起,如果格式化或任何东西都关闭,这是我的第一篇文章。谢谢你的期待!

- 查尔斯

1 个答案:

答案 0 :(得分:0)

我在代码中看到至少有几个问题:

  1. realHouseValue = custInput.charAt(0);
  2. 上面一行是用户输入的第一个字母,并认为是realHouseValue。这是你的意图吗?

    您应该使用Double.parseDouble(realHouseValue);来获取用户输入的实际值。

    要取消操作,用户只需单击输入对话框上的Cancel按钮即可。因此,您将获得null作为分配给custInput的返回值。您可以简单地将此值与“退出”进行比较,而不是与“E”进行比较。

    1. AssessedValue = realHouseValue*AssessedValueRate;
    2. 即使您接受用户的输入,也会发生上述分配。因此,它将始终显示程序启动时初始化的不变值。将其更改为函数/方法,例如:

      double calculateAssessedValue(double realHouseValue, doubld AssesedValueRate) {
          return realHouseValue*AssessedValueRate;
      }
      

      然后可以调用它将其输出给用户:

      JOptionPane.showMessageDialog(null, "Your property tax due this year is: " + calculateAssessedValue(AssessedValue, PropertyTaxRate));
      

      看看你是否可以纠正这些错误,让你朝着正确的方向前进。

      希望这有帮助!