Java 与 JOptionpane GUI 和 elseif 值

标签 java swing double joptionpane brackets

我的java程序有一个方程,它无法识别括号内的 double 值(双PropertyTax),因此它可以在方程中使用。有什么建议么?谢谢

import javax.swing.JOptionPane;
import java.util.Scanner;

public class CSC212{

public static void main(String[] args){

    Scanner in = new Scanner(System.in);

    String State = JOptionPane.showInputDialog("Enter the location ex: CA, AZ, WA, ect...");

                if(State == "AL")

        {
            double PropertyTax = 0.33;
        }

        else if(State == "AK")
        {
            double PropertyTax = 1.04;
        }

        else if(State == "AZ")
        {
            double PropertyTax = 0.72;
        }

        else if(State == "AR")
        {
            double PropertyTax = 0.52;
        }

        else if(State == "CA")
        {
            double PropertyTax = 0.74;
        }

        else if(State == "CO")
        {
            double PropertyTax = 0.6;
        }

        else if(State == "CT")
        {
            double PropertyTax = 1.63;
        }

        else if(State == "DE")
        {
            double PropertyTax = 0.43;
        }

        else if(State == "FL")
        {
            double PropertyTax = 0.97;
        }

        else if(State == "GA")
        {
            double PropertyTax = 0.83;
        }

        else if(State == "HI")
        {
            double PropertyTax = 0.26;
        }

        else if(State == "ID")
        {
            double PropertyTax = 0.69;
        }

        else if(State == "IL")
        {
            double PropertyTax = 1.73;
        }

        else if(State == "IN")
        {
            double PropertyTax = 0.85;
        }

        else if(State == "IA")
        {
            double PropertyTax = 1.29;
        }

        else if(State == "KS")
        {
            double PropertyTax = 1.01;
        }

        else if(State == "KY")
        {
            double PropertyTax = 0.72;
        }

        else if(State == "LA")
        {
            double PropertyTax = 0.18;
        }

        else if(State == "ME")
        {
            double PropertyTax = 1.09;
        }

        else if(State == "MD")
        {
            double PropertyTax = 0.87;
        }

        else if(State == "MA")
        {
            double PropertyTax = 1.04;
        }

        else if(State == "MI")
        {
            double PropertyTax = 1.05;
        }

        else if(State == "MN")
        {
            double PropertyTax = 1.05;
        }

        else if(State == "MS")
        {
            double PropertyTax = 0.52;
        }

        else if(State == "MO")
        {
            double PropertyTax = 0.91;
        }

        else if(State == "MT")
        {
            double PropertyTax = 0.83;
        }

        else if(State == "NE")
        {
            double PropertyTax = 1.76;
        }

        else if(State == "NV")
        {
            double PropertyTax = 0.84;
        }

        else if(State == "NH")
        {
            double PropertyTax = 1.86;
        }

        else if(State == "NJ")
        {
            double PropertyTax = 1.89;
        }

        else if(State == "NM")
        {
            double PropertyTax = 0.55;
        }

        else if(State == "NY")
        {
            double PropertyTax = 1.23;
        }

        else if(State == "NC")
        {
            double PropertyTax = 0.78;
        }

        else if(State == "ND")
        {
            double PropertyTax = 1.42;
        }

        else if(State == "OH")
        {
            double PropertyTax = 1.36;
        }

        else if(State == "OK")
        {
            double PropertyTax = 0.74;
        }

        else if(State == "OR")
        {
            double PropertyTax = 0.87;
        }

        else if(State == "PA")
        {
            double PropertyTax = 1.35;
        }

        else if(State == "RI")
        {
            double PropertyTax = 1.35;
        }

        else if(State == "SC")
        {
            double PropertyTax = 0.5;
        }

        else if(State == "D.C.")
        {
            double PropertyTax = 0.46;
        }

        else if(State == "SD")
        {
            double PropertyTax = 1.28;
        }

        else if(State == "TN")
        {
            double PropertyTax = 0.86;
        }

        else if(State == "TX")
        {
            double PropertyTax = 1.18;
        }

        else if(State == "UT")
        {
            double PropertyTax = 0.6;
        }

        else if(State == "VT")
        {
            double PropertyTax = 1.59;
        }

        else if(State == "WA")
        {
            double PropertyTax = 0.92;
        }

        else if(State == "WV")
        {
            double PropertyTax = 0.49;
        }

        else if(State == "WI")
        {
            double PropertyTax = 1.76;
        }

        else if(State == "WY")
        {
            double PropertyTax = 0.58;
        }

    String houseValue = JOptionPane.showInputDialog("Enter the value of the home");
        double hValue = Integer.parseInt(houseValue);

    double product = PropertyTax * hValue;


   JOptionPane.showMessageDialog(null, "The property tax is " +product);  

            }

}

最佳答案

您可以采用另一种方式来消除所有 if/else 语句。在输入框中显示状态列表,用户可以从中选择所需的状态。选择的索引与包含每个状态的所有 Tex 速率的并行数组相关。有多种方法可以使这变得更容易。

enter image description here

// Component for JOptionPane to ensure it is always displayed on top
JFrame iFrame = new JFrame();
iFrame.setAlwaysOnTop(true);
iFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
iFrame.setLocationRelativeTo(null);

double propertyTax = 0.0d;

// Parallel Arrays
// List values t display in Input-Box
String[] states = {"Alabama", "Alaska", "Arizona", "Arkansas", "California",
    "Colorado", "Connecticut", "Delaware", "Florida", "Georgia",
    "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas",
    "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts",
    "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana",
    "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico",
    "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma",
    "Oregon", "Pennsylvania", "Rhode Island", "South Carolina",
    "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia",
    "Washington", "West Virginia", "Wisconsin", "Wyoming"};

// Tax rates related to the above States
double[] taxes = {0.33d, 1.04d, 0.72d, 0.52d, 0.74d, 0.6d, 1.63d, 0.43d,
    0.97d, 0.83d, 0.26d, 0.69d, 1.73d, 0.85d, 1.29d, 1.01d,
    0.72d, 0.18, 1.04d, 1.09d, 0.87d, 1.05d, 1.05d, 0.52d,
    0.91d, 0.83d, 1.76d, 0.84d, 1.86d, 1.89d, 0.55d, 1.23d,
    0.78d, 1.42d, 1.36d, 0.74d, 0.87d, 1.35d, 1.35d, 0.5d,
    0.46d, 1.28d, 0.86d, 1.18d, 0.6d, 1.59d, 0.92d, 0.49d,
    1.76d, 0.58d};

// Show Input-Box dialog...
String selectedState = (String) JOptionPane.showInputDialog(iFrame, "Select a State:",
        "State Selection", JOptionPane.QUESTION_MESSAGE, null, states, "");
iFrame.dispose();

if (selectedState != null && !selectedState.equals("")) {
    // Get the index value of the selected State so as
    // to get the tax rate related to that state.
    for (int i = 0; i < states.length; i++) {
        if (selectedState.equals(states[i])) {
            propertyTax = taxes[i];
            break;
        }
    }

    // Get house value from User...
    String houseValue = JOptionPane.showInputDialog(iFrame, "Enter the value of the home", "Home Value",
            JOptionPane.QUESTION_MESSAGE);
    if (houseValue == null || houseValue.equals("")) {
        houseValue = "0.0";
    }
    iFrame.dispose();
    double hValue = Double.parseDouble(houseValue);

    // Calculate the property tax
    double product = hValue * (propertyTax / 100.0d);

    // Display results... 
    JOptionPane.showMessageDialog(iFrame, "The property tax is " + product);
    iFrame.dispose();
}

不一定更短,但它确实消除了用户输入错误的可能性。

关于Java 与 JOptionpane GUI 和 elseif 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61037106/

相关文章:

Java:组合函数产生十进制数

java - 什么数据类型可以用来保存阶乘 100,000,000 的值?

java - 自定义 session 并且不点击 Application::newSession

java - 根据位置给单词着色

java - 如何打开用户java输入的端口

java - 快速替换 JComboBox/BasicComboBoxUI?

java - 如何通过 Java 应用程序将查询结果从 MySQL 导出到 PowerPoint?

java - 将 JPanel 置于 Controller 之上

java - float 型最多可容纳38个数字,双型最多可容纳300个数字。这些神奇的数字从何而来?

c++ - 如何给struct成员中的双指针赋值?