if / else语句没有触发

时间:2013-10-06 05:15:43

标签: java android

我正在尝试做两件事之一。如果我的所有EditText都输入了一些长度> 0的数据,那么它应该进入我的数学方程并将数据放入EditText dispMinPmt。如果存在NULL值EditText字段,则应该在结尾处执行Toast。目前,两者都没有发生。也没有错误显示。

这是我的.java:

@SuppressLint("ShowToast")
public void ButtonOnClick(View v)
{
    TextView dispMinPmt = (TextView)findViewById(R.id.dispMinPmt); 
    Intent intent = new Intent(this, MainActivity.class);

    switch (v.getId()) {
    case R.id.calculate1:
        Toast.makeText(getApplicationContext(), "Check 1", Toast.LENGTH_SHORT).show();

        EditText nickname = (EditText) findViewById(R.id.editNickname);
        if (nickname.getText().toString().length()>0)
        {
            String debtNickname = nickname.getText().toString();
            EditText origBal = (EditText) findViewById(R.id.editOrigBal);
            if (origBal.getText().toString().length()>0)
            {
                String myOrigBal = origBal.getText().toString();
                Double originalBalance = Double.parseDouble(myOrigBal);

                EditText myAPR = (EditText) findViewById(R.id.editAPR);
                if (myAPR.getText().toString().length()>0)
                {
                    String myEditValue2 = myAPR.getText().toString();
                    Double apr = Double.parseDouble(myEditValue2);

                    EditText myOrigTerm = (EditText) findViewById(R.id.editOrigTerm);
                    if (myOrigTerm.getText().toString().length()>0)
                    {
                        String myEditValue3 = myOrigTerm.getText().toString();
                        Double originalTerm = Double.parseDouble(myEditValue3);

                        double r = apr/1200;
                        double r1 = Math.pow(r+1,originalTerm);

                        Double minPmt = (double) ((r+(r/(r1-1))) * originalBalance);
                        DecimalFormat df = new DecimalFormat("#.##");      
                        minPmt = Double.valueOf(df.format(minPmt));

                        dispMinPmt.setText("" + String.valueOf(minPmt) + "Mo.");

                    }
                }
            }
        }
        else
        {
            Toast.makeText(getApplicationContext(), "Please complete all fields", Toast.LENGTH_SHORT).show();
        }
        break;
    }
}

这是我的布局(.xml)

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".DebtInput" >

<TableRow
    android:id="@+id/tableRow1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textNickname"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Debt Nickname" />

    <EditText
        android:id="@+id/editNickname"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:inputType="text"
        android:text="Car Loan"
        android:textAppearance="?android:attr/textAppearanceSmall" />

</TableRow>

<TableRow
    android:id="@+id/tableRow2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textOrigBal"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Original Balance" />

    <EditText
        android:id="@+id/editOrigBal"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:inputType="numberDecimal"
        android:text="10000.00"
        android:textAppearance="?android:attr/textAppearanceSmall" />

</TableRow>

<TableRow
    android:id="@+id/tableRow3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textAPR"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="APR (%)" />

    <EditText
        android:id="@+id/editAPR"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:inputType="numberDecimal"
        android:text="0.00"
        android:textAppearance="?android:attr/textAppearanceSmall" />

</TableRow>

<TableRow
    android:id="@+id/tableRow4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textOrigTerm"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Loan Term (Months)" />

    <EditText
        android:id="@+id/editOrigTerm"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:inputType="number"
        android:text="60"
        android:textAppearance="?android:attr/textAppearanceSmall" />

</TableRow>

<TableRow
    android:id="@+id/tableRow5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textOutBal"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Outstanding Balance" />

    <EditText
        android:id="@+id/editOutBal"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:inputType="numberDecimal"
        android:text="1000.00"
        android:textAppearance="?android:attr/textAppearanceSmall" />

</TableRow>

<TableRow
    android:id="@+id/calcButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/calculate1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="Calculate" />
</TableRow>

<TableRow
    android:id="@+id/tableRow6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textMinPmt"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Minimum Payment" />

    <TextView
        android:id="@+id/dispMinPmt"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceSmall" />
</TableRow>

<TableRow
    android:id="@+id/tableRow7"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textAddPmt"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Additional Payment" />

    <EditText
        android:id="@+id/editAddPmt"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:inputType="numberDecimal"
        android:text="100.00"
        android:textAppearance="?android:attr/textAppearanceSmall" />

</TableRow>

<TableRow
    android:id="@+id/calcButton2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/calculate2"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="Calculate" />
</TableRow>

<TableRow
    android:id="@+id/tableRow8"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textNewPmt"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="New Payment" />

    <TextView
        android:id="@+id/dispNewPmt"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceSmall" />
</TableRow>

<TableRow
    android:id="@+id/buttons"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/add"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="Add" />

    <Button
        android:id="@+id/clear"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="Clear" />

</TableRow>

6 个答案:

答案 0 :(得分:2)

您的IF语句过于嵌套。这是一种不好的做法。此外,只有在不满足第一个条件时才会触发您的else语句。如果不满足任何后续条件,则不会发生任何事情。

我自由地整理你的代码:

public void ButtonOnClick(View v)
    {
        TextView dispMinPmt = (TextView)findViewById(R.id.dispMinPmt); 
        Intent intent = new Intent(this, MainActivity.class);

        switch (v.getId()) {
        case R.id.calculate1:
            Toast.makeText(getApplicationContext(), "Check 1", Toast.LENGTH_SHORT).show();

            EditText nickname = (EditText) findViewById(R.id.editNickname);
            EditText origBal = (EditText) findViewById(R.id.editOrigBal);
            EditText myAPR = (EditText) findViewById(R.id.editAPR);
            EditText myOrigTerm = (EditText) findViewById(R.id.editOrigTerm);

            String nicknameStr = nickname.getText().toString();
            String origBalStr = origBal.getText().toString();
            String myAPRStr = myAPR.getText().toString();
            String myOrigTermStr = myOrigTerm.getText().toString();

            double origTermValue;
            boolean origTermIsParsable;

            try
            {
                origTermValue = Double.parseDouble(origBalStr);
                origTermIsParsable = true;
            }
            catch (NumberFormatException  e) 
            {
                origTermIsParsable = false;
            }

            if (nicknameStr.length() > 0 && origBalStr.length() > 0 && myAPRStr.length() > 0 && myOrigTermStr.length() > 0 && origTermIsParsable)
            {               
                Double originalTerm = origTermValue;

                double r = apr/1200;
                double r1 = Math.pow(r+1,originalTerm);

                Double minPmt = (double) ((r+(r/(r1-1))) * originalBalance);
                DecimalFormat df = new DecimalFormat("#.##");      
                minPmt = Double.valueOf(df.format(minPmt));

                dispMinPmt.setText("" + String.valueOf(minPmt) + "Mo.");

            }
            else
            {
                Toast.makeText(getApplicationContext(), "Please complete all fields", Toast.LENGTH_SHORT).show();
            }
            break;
        }
    }

一般来说,在对方之间嵌套这么多的IF是你应该总是试图避免的。如果你在另一个中有两个if,则消除其中一个,并将条件与“AND”语句组合。

希望这会有所帮助:)

答案 1 :(得分:1)

您的问题是您尝试使用>比较字符串,但这不起作用。你要么需要把它变成int;或者,您需要使用equals方法来比较字符串。使用equals,您将无法使用大于或小于。

答案 2 :(得分:0)

尝试添加 trim() 它将删除所有包含的空格,如此

nickname.getText().toString().trim().length()>0

同样将此行放在onCreate方法

 TextView dispMinPmt = (TextView)findViewById(R.id.dispMinPmt); 

答案 3 :(得分:0)

int value = 0;
value= Integer.parseInt(edittext.getText().toString());

并检查值&gt; 0。

这是检查编辑文本数据是整数值而不是字符串的情况。

答案 4 :(得分:0)

android:onClick="ButtonOnClick" is missing from the XML

答案 5 :(得分:0)

尝试使用StringUtils.isEmpty(nicknameStr)方法,而不是nicknameStr.length > 0