Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用IF、ELSE-IF语句进行计算_Java_If Statement - Fatal编程技术网

Java 使用IF、ELSE-IF语句进行计算

Java 使用IF、ELSE-IF语句进行计算,java,if-statement,Java,If Statement,我不知道为什么我不能用if和elseif语句正确地编写我的简单计算 所有变量只返回一个“0.0”值,我猜不出是什么错?你们能帮我解决这个问题吗 这是我的代码: public class MonthlyComputation extends MyActivity { String civil_status; public void DoComputation() { final EditText net_salary = (EditText) findViewById(R.id.et_

我不知道为什么我不能用if和elseif语句正确地编写我的简单计算

所有变量只返回一个“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);

        }
    });
}
公共类每月计算扩展MyActivity
{
字符串状态;
公开作废文件计算()
{
最终EditText净工资=(EditText)findViewById(R.id.et净工资每月);
最终EditText税款到期=(EditText)findViewById(R.id.et_税款到期);
最终按钮btn_compute=(按钮)findViewById(R.id.btn_compute_from_monthly);
最终文本视图txt3=(文本视图)findViewById(R.id.textView3);
最终文本视图txt4=(文本视图)findViewById(R.id.textView4);
最终文本视图txt5=(文本视图)findViewById(R.id.textView5);
最终文本视图txt6=(文本视图)findViewById(R.id.textView6);
btn_compute.setOnClickListener(新建按钮.OnClickListener())
{
@凌驾
公共void onClick(视图v)
{
双重净税率,应纳税额,税率=0,免税额=0,分税率=0,带税率;
串ns、td、r、e、s、wr;
ns=净工资。getText().toString();
netSalary=Double.parseDouble(ns);
/*单身或已婚,无需抚养*/
如果((公民身份=“SME”)&&&(netSalary>=4167)和&(netSalary<5000))
{
比率=0.05;
豁免=0.00;
减数=4167;
}
否则如果((公民身份=“SME”)&&&(netSalary>=5000)和&(netSalary<6667))
{
比率=0.1;
豁免=41.67;
减数=5000;
}
taxDue=netSalary-subtrahand;
withRate=应纳税额*税率;
应纳税额=税率+免税额;
应交税费SETEXT(双重toString(应交税费));
td=字符串.valueOf(taxDue);
e=字符串。值of(豁免);
s=字符串.valueOf(减数);
r=字符串。值(比率);
txt3.setText(td);
txt4.setText(e);
txt5.setText(s);
txt6.setText(r);
}
});
}

永远不要使用
=
来比较
字符串
(以及一般的对象),您很可能会得到
false
,因为它比较的是对象引用,而不是值

有关更多信息,请参见其他问题:

解决方案是使用
.equals()

。。。
如果(“SME”。等于(公民身份)和(netSalary>=4167)和(netSalary<5000))
{
比率=0.05;
豁免=0.00;
减数=4167;
}
...

永远不要使用
=
来比较
字符串
(以及一般的对象),您很可能会得到
false
,因为它比较的是对象引用,而不是值

有关更多信息,请参见其他问题:

解决方案是使用
.equals()

。。。
如果(“SME”。等于(公民身份)和(netSalary>=4167)和(netSalary<5000))
{
比率=0.05;
豁免=0.00;
减数=4167;
}
...