NullPointerException/Help Reading LogCat
<p>Can anyone tell me the meaning of these errors , actually I am new to android coding and unable to figure out these errors please help .</p>

<pre><code>06-11 11:56:08.118: W/dalvikvm(593): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
06-11 11:56:08.128: E/AndroidRuntime(593): FATAL EXCEPTION: main
06-11 11:56:08.128: E/AndroidRuntime(593): java.lang.RuntimeException: Unable to start activity ComponentInfo{gaurav.android/gaurav.android.CalcActivity}: java.lang.NullPointerException
06-11 11:56:08.128: E/AndroidRuntime(593):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
06-11 11:56:08.128: E/AndroidRuntime(593):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
06-11 11:56:08.128: E/AndroidRuntime(593):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
06-11 11:56:08.128: E/AndroidRuntime(593):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
06-11 11:56:08.128: E/AndroidRuntime(593):  at android.os.Handler.dispatchMessage(Handler.java:99)
06-11 11:56:08.128: E/AndroidRuntime(593):  at android.os.Looper.loop(Looper.java:137)
06-11 11:56:08.128: E/AndroidRuntime(593):  at android.app.ActivityThread.main(ActivityThread.java:4424)
06-11 11:56:08.128: E/AndroidRuntime(593):  at java.lang.reflect.Method.invokeNative(Native Method)
06-11 11:56:08.128: E/AndroidRuntime(593):  at java.lang.reflect.Method.invoke(Method.java:511)
06-11 11:56:08.128: E/AndroidRuntime(593):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-11 11:56:08.128: E/AndroidRuntime(593):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-11 11:56:08.128: E/AndroidRuntime(593):  at dalvik.system.NativeStart.main(Native Method)
06-11 11:56:08.128: E/AndroidRuntime(593): Caused by: java.lang.NullPointerException
06-11 11:56:08.128: E/AndroidRuntime(593):  at gaurav.android.CalcActivity.reset(CalcActivity.java:341)
06-11 11:56:08.128: E/AndroidRuntime(593):  at gaurav.android.CalcActivity.onCreate(CalcActivity.java:58)
06-11 11:56:08.128: E/AndroidRuntime(593):  at android.app.Activity.performCreate(Activity.java:4465)
06-11 11:56:08.128: E/AndroidRuntime(593):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
06-11 11:56:08.128: E/AndroidRuntime(593):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
</code></pre>

<p>This is my code , it is actually a simple calculator .</p>

<p>package gaurav.android;</p>

<pre><code>import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.Button;
import android.widget.EditText;


public class CalcActivity extends Activity {
    EditText t=null;
    private final int MENUITEM_CLOSE = 300;
    private boolean hasChanged;
    private boolean readyToClear;

    public Button b1=null;
    public Button b2=null;
    public Button b3=null;
    public Button b4=null;
    public Button b5=null;
    public Button b6=null;
    public Button b7=null;
    public Button b8=null;
    public Button b9=null;
    public Button b10=null;
    public Button b11=null;
    public Button b12=null;
    public Button b13=null;
    public Button b14=null;
    public Button b15=null;
    public Button b16=null;
    public Button b17=null;
    public Button b18=null;
    public Button b19=null;
    public Button b20=null;
    public Button b21=null;
    public Button b22=null;
    public Button b23=null;
    public Button b24=null;
    public Button b25=null;
    public Button b26=null;
    public Button b27=null;
    public Button b28=null;

    private double memNum=0;
    private int operator=1;
    private double num=0;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setTheme(android.R.style.Theme_Black);
        setContentView(R.layout.main);
        reset();
        t=(EditText)findViewById(R.id.editText1);
        b1=(Button)findViewById(R.id.Button17);
        b2=(Button)findViewById(R.id.Button18);
        b3=(Button)findViewById(R.id.Button19);
        b4=(Button)findViewById(R.id.Button12);
        b5=(Button)findViewById(R.id.Button16);
        b6=(Button)findViewById(R.id.Button15);
        b7=(Button)findViewById(R.id.Button06);
        b8=(Button)findViewById(R.id.Button05);
        b9=(Button)findViewById(R.id.Button09);
        b10=(Button)findViewById(R.id.button7);
        b11=(Button)findViewById(R.id.button1);
        b12=(Button)findViewById(R.id.button2);
        b13=(Button)findViewById(R.id.button3);
        b14=(Button)findViewById(R.id.Button11);
        b15=(Button)findViewById(R.id.Button07);
        b16=(Button)findViewById(R.id.Button01);
        b17=(Button)findViewById(R.id.Button02);
        b18=(Button)findViewById(R.id.Button03);
        b19=(Button)findViewById(R.id.Button14);
        b20=(Button)findViewById(R.id.button4);
        b21=(Button)findViewById(R.id.Button10);
        b22=(Button)findViewById(R.id.Button20);
        b23=(Button)findViewById(R.id.button6);
        b24=(Button)findViewById(R.id.button9);
        b25=(Button)findViewById(R.id.button8);
        b26=(Button)findViewById(R.id.Button13);
        b27=(Button)findViewById(R.id.Button21);
        b28=(Button)findViewById(R.id.button30);

        b1.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleNumber(1);}});
        b2.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleNumber(2);}});
        b3.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleNumber(3);}});   
        b4.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleNumber(4);}});
        b5.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleNumber(5);}});
        b6.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleNumber(6);}});
        b7.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleNumber(7);}});   
        b8.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleNumber(8);}});
        b9.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleNumber(9);}});
        b10.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleNumber(0);}});
        b11.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){memNum=0;}});   
        b12.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){setValue(Double.toString(memNum));}});
        b13.setOnClickListener(new Button.OnClickListener(){public void onClick(View v)
        {}});
        b14.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){
            memNum = memNum+ Double.parseDouble(t.getText().toString());
            operator = 0;
        }});
        b15.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){
            memNum = memNum- Double.parseDouble(t.getText().toString());
            operator = 0;
        }});   
        b16.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleBackspace();}});
        b17.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){}});
        b18.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){reset();}});
        b19.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handlePlusMinus();}});   
        b20.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){
            setValue(Double.toString(Math.sqrt(Double.parseDouble(t.getText().toString()))));
        }});
        b21.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleEquals(4);}});
        b22.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleEquals(3);}});
        b23.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleEquals(2);}});   
        b24.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleEquals(1);}});
        b25.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleDecimal();}});
        b26.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){
            setValue(Double.toString(num*(0.01 * Double.parseDouble(t.getText().toString()))));
        }});
        b27.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){}});   
        b28.setOnClickListener(new Button.OnClickListener(){public void onClick(View v){handleEquals(0);}});

        t.setOnKeyListener(new OnKeyListener()
        {
            public boolean onKey(View v,int i,android.view.KeyEvent e)
            {
                if (e.getAction() == KeyEvent.ACTION_DOWN) 
                {
                    int keyCode=e.getKeyCode();

                    switch (keyCode) {
                     case KeyEvent.KEYCODE_0:
                      handleNumber(0);
                      break;

                     case KeyEvent.KEYCODE_1:
                      handleNumber(1);
                      break;

                     case KeyEvent.KEYCODE_2:
                      handleNumber(2);
                      break;

                     case KeyEvent.KEYCODE_3:
                      handleNumber(3);
                      break;

                     case KeyEvent.KEYCODE_4:
                      handleNumber(4);
                      break;

                     case KeyEvent.KEYCODE_5:
                      handleNumber(5);
                      break;

                     case KeyEvent.KEYCODE_6:
                      handleNumber(6);
                      break;

                     case KeyEvent.KEYCODE_7:
                      handleNumber(7);
                      break;

                     case KeyEvent.KEYCODE_8:
                      handleNumber(8);
                      break;

                     case KeyEvent.KEYCODE_9:
                      handleNumber(9);
                      break;

                     case 43:
                      handleEquals(1);
                      break;

                     case KeyEvent.KEYCODE_EQUALS:
                      handleEquals(0);
                      break;

                     case KeyEvent.KEYCODE_MINUS:
                      handleEquals(2);
                      break;

                     case KeyEvent.KEYCODE_PERIOD:
                      handleDecimal();
                      break;

                     case KeyEvent.KEYCODE_C:
                      reset();
                      break;

                     case KeyEvent.KEYCODE_SLASH:
                      handleEquals(4);
                      break;

                     case KeyEvent.KEYCODE_DPAD_DOWN:
                      return false;
                     }
                    }

                    return true;
                   }
                  });
                 }

                 @Override
                 public boolean onCreateOptionsMenu(Menu menu) {
                  menu.add(0,1, MENUITEM_CLOSE, "Close");

                  return super.onCreateOptionsMenu(menu);
                 }

                 @Override
                 public boolean onOptionsItemSelected(MenuItem item) {
                  switch (item.getItemId()) {
                  case MENUITEM_CLOSE:
                   finish();
                   break;
                  }

                  return super.onOptionsItemSelected(item);
                 }

                 private void handleEquals(int newOperator) {
                  if (hasChanged) {
                   switch (operator) {
                   case 1:
                    num = num + Double.parseDouble(t.getText().toString());
                    break;
                   case 2:
                    num = num - Double.parseDouble(t.getText().toString());
                    break;
                   case 3:
                    num = num * Double.parseDouble(t.getText().toString());
                    break;
                   case 4:
                    num = num / Double.parseDouble(t.getText().toString());
                    break;
                   }

                   String txt = Double.toString(num);
                   t.setText(txt);
                   t.setSelection(txt.length());

                   readyToClear = true;
                   hasChanged = false;
                  }

                  operator = newOperator;
                 }

                 private void handleNumber(int num) {
                  if (operator == 0)
                   reset();

                  String txt = t.getText().toString();
                  if (readyToClear) {
                   txt = "";
                   readyToClear = false;
                  } else if (txt.equals("0"))
                   txt = "";

                  txt = txt + Integer.toString(num);

                  t.setText(txt);
                  t.setSelection(txt.length());

                  hasChanged = true;
                 }

                 private void setValue(String value) {
                  if (operator == 0)
                   reset();

                  if (readyToClear) {
                   readyToClear = false;
                  }

                  t.setText(value);
                  t.setSelection(value.length());

                  hasChanged = true;
                 }

                 private void handleDecimal() {
                  if (operator == 0)
                   reset();

                  if (readyToClear) {
                   t.setText("0.");
                   t.setSelection(2);
                   readyToClear = false;
                   hasChanged = true;
                  } else {
                   String txt = t.getText().toString();

                   if (!txt.contains(".")) {
                    t.append(".");
                    hasChanged = true;
                   }
                  }
                 }

                 private void handleBackspace() {
                  if (!readyToClear) {
                   String txt = t.getText().toString();
                   if (txt.length() &gt; 0) {
                    txt = txt.substring(0, txt.length() - 1);
                    if (txt.equals(""))
                     txt = "0";

                    t.setText(txt);
                    t.setSelection(txt.length());
                   }
                  }
                 }

                 private void handlePlusMinus() {
                  if (!readyToClear) {
                   String txt = t.getText().toString();
                   if (!txt.equals("0")) {
                    if (txt.charAt(0) == '-')
                     txt = txt.substring(1, txt.length());
                    else
                     txt = "-" + txt;

                    t.setText(txt);
                    t.setSelection(txt.length());
                   }
                  }
                 }

                 private void reset() {
                  num = 0;
                  t.setText("0");
                  t.setSelection(1);
                  operator = 1;
                 }


                    }
</code></pre>
