I am really starting to learn Java. When I run this code, everything works fine until I leave my EditText fields in an empty field and hit the start button. Then I get:
ERROR/AndroidRuntime(866): FATAL EXCEPTION: main ERROR/AndroidRuntime(866): java.lang.NumberFormatException: ERROR/AndroidRuntime(866): at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:267)
I think when I try to parse Double from a string, it does not get any value and creates an error. I was wondering how to avoid this error and give some kind of variable value so that it is never empty? Thanks for the help!
import android.app.Activity; import android.os.Bundle; import android.widget.EditText; import android.widget.TextView; import android.widget.Button; import android.view.View; import android.view.View.OnClickListener; public class Main extends Activity { private EditText noKids; private EditText noGumballs; private TextView noSum; private Button b; private Button br; double etKids = 0; double etGumballs = 0; private double tvSumIn = 0.00; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initControls(); } private void initControls() { noKids = (EditText) findViewById(R.id.xetKids); noGumballs = (EditText) findViewById(R.id.xetGumballs); noSum = (TextView) findViewById(R.id.tvSum); br = (Button) findViewById(R.id.xbtnReset); br.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { reset(); br.setVisibility(View.INVISIBLE); } private void reset() { noKids.setText(""); noGumballs.setText(""); noSum.setText(""); } }); b = (Button) findViewById(R.id.xbtnCalculate); b.setOnClickListener(new OnClickListener() { public void onClick(View v) { calculate(); br.setVisibility(View.VISIBLE); } private void calculate() { etKids = Double.parseDouble(noKids.getText().toString()); etGumballs = Double.parseDouble(noGumballs.getText().toString()); tvSumIn = etGumballs / etKids; String thisIsIt = new Double(tvSumIn).toString(); if(tvSumIn < 2){ noSum.setText(thisIsIt + " This is it "); }else{ noSum.setText("This is else"); } } }); } }
This is my main.xml file and I assume that there is nothing special in the manifest.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="How many kids have you got?"></TextView> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="number" android:id="@+id/xetKids"> <requestFocus></requestFocus> </EditText> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="How many gumballs have you got?"></TextView> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="number" android:id="@+id/xetGumballs"></EditText> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Calculate" android:id="@+id/xbtnCalculate"></Button> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tvSum"></TextView> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/xbtnReset" android:text="Reset" android:onClick="selfDestruct" android:visibility="invisible"></Button> </LinearLayout>
source share