我的愚蠢再一次袭来。我要感谢所有在我之前的问题上帮助过我的人。我现在想要编辑的最后一件事。对于那些不知道的人,我正在使用Java在Eclipse中编写Android应用程序。在此活动上,当我单击计算按钮时,它崩溃了,我无法弄清楚原因。我有一个类似的问题,在类似的应用程序中缺少括号,但我无法解决这个问题。我发誓,我查看了拼写和单词的情况,没有看到任何东西。然而,了解我,这可能是出了什么问题。致谢!!!
PS。我的logcat没有错误,所以我真的不知道从哪里开始。如果有人可以指出我可能会给他们更多的东西,那么我很乐意提供帮助。
Piggy.Java
package net.finalexam;
import java.text.DecimalFormat;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
public class Piggy extends Activity {
double quartersValue = .25;
double dimesValue = .10;
double nicklesValue = .05;
double penniesValue = .01 ;
double dollarsValue = 1;
double quartersMoney;
double dollarsMoney;
double dimesMoney;
double nicklesMoney;
double penniesMoney;
double totalMoney;
double newTotalMoney;
double oldTotalMoney=0;
int numberOfQuarters;
int numberOfDimes;
int numberOfNickles;
int numberOfPennies;
int numberOfDollars;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView (R.layout.piggybank);
final EditText quarters =(EditText)findViewById(R.id.txtQuarters);
final EditText dimes = (EditText)findViewById(R.id.txtDimes);
final EditText nickles =(EditText)findViewById(R.id.txtNickles);
final EditText pennies = (EditText)findViewById(R.id.txtPennies);
final EditText dollars = (EditText)findViewById(R.id.txtDollars);
Button calculate =(Button)findViewById(R.id.btnCalculate);
final TextView results = ((TextView)findViewById(R.id.txtResults));
final RadioButton add =(RadioButton)findViewById(R.id.radAdd);
final RadioButton subtract =(RadioButton)findViewById(R.id.radSubtract);
calculate.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
numberOfQuarters = Integer.parseInt(quarters.getText().toString());
numberOfDimes = Integer.parseInt(dimes.getText().toString());
numberOfNickles = Integer.parseInt(nickles.getText().toString());
numberOfPennies = Integer.parseInt(pennies.getText().toString());
numberOfDollars = Integer.parseInt(dollars.getText().toString());
quartersMoney = numberOfQuarters * quartersValue;
dimesMoney = numberOfDimes * dimesValue;
nicklesMoney = numberOfNickles * nicklesValue;
penniesMoney = numberOfPennies * penniesValue;
dollarsMoney = numberOfDollars;
totalMoney= quartersMoney + dimesMoney + nicklesMoney + penniesMoney+dollarsMoney;
DecimalFormat currency = new DecimalFormat("$###,###.##");
if (add.isChecked()){
if(totalMoney>0){
newTotalMoney =oldTotalMoney +totalMoney;
oldTotalMoney = newTotalMoney;
results.setText(currency.format("newTotalMoney"));
}else{
Toast.makeText(Piggy.this, "You need to do more chores!!",Toast.LENGTH_LONG).show();
}
}
if (subtract.isChecked()){
newTotalMoney =oldTotalMoney +totalMoney;
}
if(newTotalMoney>0){
oldTotalMoney = newTotalMoney;
results.setText(currency.format("newTotalMoney"));
}else{
Toast.makeText(Piggy.this, "Save more money kido!!",Toast.LENGTH_LONG).show();
}
;
}
});
}
}
以下是与文件一起使用的Piggy XML。如果有人能看到任何东西我会感激你的帮助。我也无法找到最好的方法来命名。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/piggy" >
<EditText
android:id="@+id/txtQuarters"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="27dp"
android:ems="10"
android:hint="Number of quarters"
android:inputType="number" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/txtDimes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtQuarters"
android:layout_centerHorizontal="true"
android:ems="10"
android:hint="Number of dimes"
android:inputType="number" />
<EditText
android:id="@+id/txtNickles"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtDimes"
android:layout_centerHorizontal="true"
android:ems="10"
android:hint="Number of nickles"
android:inputType="number" />
<EditText
android:id="@+id/txtPennies"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtNickles"
android:layout_centerHorizontal="true"
android:ems="10"
android:hint="Number of pennies"
android:inputType="number" />
<TextView
android:id="@+id/txtResults"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="38dp" />
<EditText
android:id="@+id/txtDollars"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtPennies"
android:layout_centerHorizontal="true"
android:ems="10"
android:hint="Number of Dollars"
android:inputType="number" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtDollars"
android:layout_centerHorizontal="true" >
<RadioButton
android:id="@+id/radAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Add" />
<RadioButton
android:id="@+id/radSubtract"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Subtract" />
</RadioGroup>
<Button
android:id="@+id/btnCalculate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/radioGroup1"
android:layout_centerHorizontal="true"
android:text="Calculate" />
</RelativeLayout>
编辑。多谢你们。这个网站对我来说真的是一个很大的帮助,是一个很好的资源。话虽如此,我找到了错误日志。
06-21 18:06:25.619:E / AndroidRuntime(26042):java.lang.NumberFormatException:无法解析''为整数
答案 0 :(得分:2)
如果你没有填写一个EditTexts,这将返回一个空字符串""
,试图从一个空字符串解析一个Integer将给你一个数字格式异常
你应该先检查一下:
if(!"".equals(yourString){
int i = Integer.parseInt(yourString);
}
修改的
您也尝试这样做:
currency.format("newTotalMoney")
当你的意思是这样做时:
currency.format(newTotalMoney)
编辑2
为了省时间你应该写一个像这样的方法:
private Integer getNumber(EditText editText){
int num = 0;
if(editText == null) {
Log.e("YouApp", "Didnt find view");
return num;
}
String input = editText.getText().toString();
if(!"".equals(input)) {
try{
num = Integer.parseInt(input);
} catch(NumberFormatException e){
Log.("YouApp", "Invalid input: "+input, e);
}
}
return num;
}
然后在您的应用中使用它:
numberOfNickles = getNumber(nickles);
numberOfPennies = getNumber(pennies);
// etc