gpt4 book ai didi

java - if/else 语句不触发

转载 作者:行者123 更新时间:2023-11-29 05:36:52 25 4
gpt4 key购买 nike

我正在尝试做两件事中的一件。如果我所有的 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>

最佳答案

您的 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”语句组合条件。

希望这有帮助:)

关于java - if/else 语句不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19205674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com