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