2017-06-12 37 views
0

我是java的初学者。我目前的任务是将以前的代码转换为使用GUI的代码。这是以前的代码。如何让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”,我想打印出“Good Bye”,然后停止运行。这是我到目前为止:

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

看看发布的答案[这里](https://stackoverflow.com/questions/11871520/how-can-i-read-input-from-the-console-using-the-scanner-class- in-java) – d33j

+0

所以你想构建一个像Swing一样的真正的GUI?或者你在寻找一种基于控制台的解决方案? –

+0

只是弹出窗口,这是与此导入: import javax.swing.JOptionPane; – Charles

回答

0

至少有一对夫妇,我在你的代码中看到的问题:

  1. 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)); 
    

    看看你是否能纠正这些错误,让你在正确的方向。


    希望这有助于!