java - 使用 IF、ELSE IF 语句计算

标签 java if-statement

我不知道为什么我无法使用 if 和 else if 语句正确地编写我的简单计算代码。

所有变量都只返回一个“0.0”值,我猜不出哪里出了问题?你能帮我解决这个问题吗?

这是我的代码:

public class MonthlyComputation extends MyActivity
{
String civil_status;

public void DoComputation()
{

    final EditText net_salary = (EditText) findViewById(R.id.et_net_monthly);
    final EditText tax_due = (EditText) findViewById(R.id.et_taxdue);
    final Button btn_compute = (Button) findViewById(R.id.btn_compute_from_monthly);
    final TextView txt3 = (TextView) findViewById(R.id.textView3);
    final TextView txt4 = (TextView) findViewById(R.id.textView4);

    final TextView txt5 = (TextView) findViewById(R.id.textView5);
    final TextView txt6 = (TextView) findViewById(R.id.textView6);


    btn_compute.setOnClickListener(new Button.OnClickListener()
    {

        @Override
        public void onClick(View v)
        {

            double netSalary, taxDue, rate = 0, exemption = 0, subtrahend = 0, withRate;
            String ns, td, r, e, s, wr;

            ns = net_salary.getText().toString();
            netSalary = Double.parseDouble(ns);

            /* Single or Married with no dependent */

            if ((civil_status == "SME") && (netSalary >= 4167) && (netSalary < 5000))
            {
                rate = 0.05;
                exemption = 0.00;
                subtrahend = 4167;
            }

            else if ((civil_status == "SME") && (netSalary >= 5000) && (netSalary < 6667))
            {
                rate = 0.1;
                exemption = 41.67;
                subtrahend = 5000;
            }

            taxDue = netSalary - subtrahend;
            withRate = taxDue * rate;
            taxDue = withRate + exemption;
            tax_due.setText(Double.toString(taxDue));

            td = String.valueOf(taxDue);
            e = String.valueOf(exemption);
            s = String.valueOf(subtrahend);
            r = String.valueOf(rate);

            txt3.setText(td);
            txt4.setText(e);
            txt5.setText(s);
            txt6.setText(r);

        }
    });
}

最佳答案

永远不会使用==来比较String(和一般的对象),你很可能会得到false 因为它比较对象引用,而不是值。

有关更多信息,请参阅其他问题:Java String.equals versus ==

解决方案?使用 .equals() 代替:

...
if ("SME".equals(civil_status) && (netSalary >= 4167) && (netSalary < 5000))
{
    rate = 0.05;
    exemption = 0.00;
    subtrahend = 4167;
}
...

关于java - 使用 IF、ELSE IF 语句计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13670921/

相关文章:

python - "or"条件导致 "if"出现问题

java - 读取非负整数列表并显示最大整数、最小整数以及所有整数的平均值

sql-server - SQL Server : If @variable is null set @variable = x

Java - IF 'input' = 'this' {将数组中的字符串存储到变量中}

javascript - 每个元素的高度如果高于则函数

java - 提取两个字符串之间的字符串

java - Neo4j OGM 映射异常

java - 如果我创建一个新对象并将其放入 main 方法中,java 会运行构造函数还是整个类?

java - 是否有其他方法可以实现 100-1000 "if...else"案例

java - 如何从 fragment 设置 Activity 中按钮的边框