0

I am learning Android so I want to keep things simple.

I have to add two numbers and display the result in a single editbox. To add with the second number you have store the first number in a variable. Then later add using this variable with the second number in the edit text.

If you look at the xml and Java Code below you will have a better idea. Thanks in advance.

<?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">
  <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/relativeLayout1" android:layout_gravity="bottom">
    <Button android:text="1" android:padding="20px" android:layout_marginTop="38dp" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/button1" android:layout_alignParentLeft="true"></Button>
    <Button android:text="2" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_alignTop="@+id/button1" android:id="@+id/button2" android:layout_toRightOf="@+id/button1"></Button>
    <Button android:text="3" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_alignTop="@+id/button2" android:id="@+id/button3" android:layout_toRightOf="@+id/button2"></Button>
    <Button android:text="4" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_alignTop="@+id/button3" android:id="@+id/button4" android:layout_toRightOf="@+id/button3"></Button>
    <Button android:text="5" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/button5" android:layout_below="@+id/button1" android:layout_alignParentLeft="true"></Button>
    <Button android:text="6" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_alignTop="@+id/button5" android:layout_alignLeft="@+id/button2" android:id="@+id/button6"></Button>
    <Button android:text="7" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_alignTop="@+id/button6" android:layout_alignLeft="@+id/button3" android:id="@+id/button7"></Button>
    <Button android:text="8" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_alignLeft="@+id/button4" android:id="@+id/button8" android:layout_below="@+id/button4"></Button>
    <Button android:text="=" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_alignLeft="@+id/button11" android:id="@+id/button15" android:layout_below="@+id/button12"></Button>
<Button android:text="clear" android:layout_alignRight="@+id/button8" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_alignBottom="@+id/button15" android:layout_alignLeft="@+id/button12" android:id="@+id/button16" android:layout_below="@+id/button12"></Button>
    <Button android:text="-" android:layout_alignRight="@+id/button8" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/button12" android:layout_below="@+id/button8"></Button>
    <Button android:text="+" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_above="@+id/button15" android:layout_toLeftOf="@+id/button16" android:id="@+id/button11"></Button>
    <Button android:text="/" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_toLeftOf="@+id/button7" android:layout_alignTop="@+id/button15" android:id="@+id/button14"></Button>
    <Button android:text="0" android:layout_alignRight="@+id/button14" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_above="@+id/button14" android:id="@+id/button0"></Button>
    <Button android:text="*" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_toLeftOf="@+id/button10" android:layout_alignTop="@+id/button14" android:id="@+id/button13"></Button>
    <Button android:text="9" android:padding="20px" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_above="@+id/button13" android:id="@+id/button9" android:layout_alignParentLeft="true"></Button>
<EditText android:id="@+id/editText1" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_below="@+id/button14"></EditText>
  </RelativeLayout>
</LinearLayout>

Java code

package calci.tor;
import android.R.integer;
import android.R.string;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class CalculatorActivity extends Activity {
    /** Called when the activity is first created. */
    public EditText display;  
    TextView edt;
    Integer c;
    String a="",b;
    //int d=0;

    Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    edt=(EditText)findViewById(R.id.editText1);
    b1=(Button)findViewById(R.id.button1);
    b2=(Button)findViewById(R.id.button2);
    b3=(Button)findViewById(R.id.button3);
    b4=(Button)findViewById(R.id.button4);
    b5=(Button)findViewById(R.id.button5);
    b6=(Button)findViewById(R.id.button6);
    b7=(Button)findViewById(R.id.button7);
    b8=(Button)findViewById(R.id.button8);
    b9=(Button)findViewById(R.id.button9);
    b10=(Button)findViewById(R.id.button0);
    b11=(Button)findViewById(R.id.button11);
    b12=(Button)findViewById(R.id.button12);
    b13=(Button)findViewById(R.id.button13);
    b14=(Button)findViewById(R.id.button14);
    b15=(Button)findViewById(R.id.button15);
    b16=(Button)findViewById(R.id.button16);



    b1.setOnClickListener(new View.OnClickListener() 
    {

        public void onClick(View v) {
            // TODO Auto-generated method stub

            a=edt.getText().toString();
            edt.setText(a+ "1");



        }
    });

    b2.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    a=edt.getText().toString();
                    edt.setText(a+ "2");
                                        }
            });

    b3.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {
                    a=edt.getText().toString();
                    edt.setText(a+ "3");
                                        }
            });


    b4.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {
                    a=edt.getText().toString();
                    edt.setText(a+ "4");

                                        }
            });


    b5.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {

                    a=edt.getText().toString();
                    edt.setText(a+ "5");

                }
            });


    b6.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    a=edt.getText().toString();
                    edt.setText(a+ "6");
                                        }
            });


    b7.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {

                    a=edt.getText().toString();
                    edt.setText(a+ "7");
                                        }
            });


    b8.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    a=edt.getText().toString();
                    edt.setText(a+ "8");

                }
            });


    b9.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    a=edt.getText().toString();
                    edt.setText(a+ "9");
                                        }
            });


    b10.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    a=edt.getText().toString();
                    edt.setText(a+ "0");

                }
            });


    b11.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {
                    // TODO Auto-generated method stub

                       String aa;
                      aa=a;      //To Store the first number displayed in edit text  to aa
                edt.setText("+");
                    edt.setText("");
                    //d=1;
                    c=Integer.parseInt(aa)+Integer.parseInt(a);




                }
            });





    b12.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    edt.setText("-");

                }
            });


    b13.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    edt.setText("*");
                }
            });



    b14.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    edt.setText("/");
                }
            });


    b15.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    //int c=Integer.parseInt(a)+Integer.parseInt(b);
                    //edt.setText(c);
                    display.setText(c);
                }
            });


    b16.setOnClickListener(new View.OnClickListener()
    {

                public void onClick(View v) {
                    // TODO Auto-generated method stub

                edt.setText("");
                }
    });
    }
}
J Richard Snape
  • 20,116
  • 5
  • 51
  • 79
zyonneo
  • 1,319
  • 5
  • 25
  • 63
  • try out this thread, it has already answered you question http://stackoverflow.com/questions/9435041/calculator-problems-android-programming – Darko Rodic Apr 23 '12 at 12:16
  • You can cut down the lines in your code by a large amount by implementing an OnClickListener at the class level and then inside your onCreate method, set the listener on all of your buttons and finally override the onClick method somewhere and use a switch statement on the Resource ID. That will save you a lot of repeating/typing – Eenvincible Feb 18 '14 at 01:06

3 Answers3

1

If your calculator has no ( / ) and you don't allow entering negative numbers then a simple algorithm to calculate a constant input of numbers and operations could work like this:

You have one variable which represents the result (that you probably want to display each step in the EditText) and one to buffer unfinished results

if the operation is * or /: apply it to the buffer

if the operation is + or -: add buffer to result, overwrite buffer with new input

2 * 4 + 3 + 5 * 2 * 3 - 1 + 2

  • initially final result = 0, buffer = 1

  • 2 -> result = 0, buffer = 2 (careful here, I interpreted the initial step as *2)

  • * 4 -> result = 0, buffer = (2*4) = 8
  • + 3 -> result = (0+8) = 8, buffer = 3
  • + 5 -> result = (8+3) = 11, buffer = 5
  • * 2 -> result = 11, buffer = (5*2) = 10
  • * 3 -> result = 11, buffer = (10*3) = 30
  • - 1 -> result = (11+30) = 41, buffer = -1
  • + 2 -> result = (41-1) = 40, buffer = 2

-> finally (e.g. when pressing =) add both together: Answer = 42

zapl
  • 63,179
  • 10
  • 123
  • 154
  • Thanks for answering Darko Rodic and Zapl...really thanks...am not tht expert with codes just a beginner....Darko for my program there is only one single edit text...in your program u have done with two text views....only need one...where u display the answer...@zapl am trying to work out ur logic...code will be helpful.. – zyonneo Apr 23 '12 at 18:09
  • I don't have any code since I thought about that only on paper. But there shouldn't be too much change in your code. You already do something similar with `c=Integer.parseInt(aa)+Integer.parseInt(a);` when user hits `+` – zapl Apr 23 '12 at 18:18
  • Hello Zapl and darko...finaly done that today....thnx for ur help..the problem was we had to use if statement....so we declared a variable = 0 earlier then used it as condition...so tht v can use if condition.. – zyonneo Apr 24 '12 at 12:29
1
//Below having correct programming .
//I did some changes in your code.This code was working nicely try this.
//`import android.os.Bundle;
import android.R.integer;
import android.R.string;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

 public EditText display;  
TextView edt;
Integer c,d,r,b;
String a="0",aa;


Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16;

@Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    edt=(EditText)findViewById(R.id.editText1);
    b1=(Button)findViewById(R.id.button1);
    b2=(Button)findViewById(R.id.button2);
    b3=(Button)findViewById(R.id.button3);
    b4=(Button)findViewById(R.id.button4);
    b5=(Button)findViewById(R.id.button5);
    b6=(Button)findViewById(R.id.button6);
    b7=(Button)findViewById(R.id.button7);
    b8=(Button)findViewById(R.id.button8);
    b9=(Button)findViewById(R.id.button9);
    b10=(Button)findViewById(R.id.button0);
    b11=(Button)findViewById(R.id.button11);
    b12=(Button)findViewById(R.id.button12);
    b13=(Button)findViewById(R.id.button13);
    b14=(Button)findViewById(R.id.button14);
    b15=(Button)findViewById(R.id.button15);
    b16=(Button)findViewById(R.id.button16);



    b1.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             // TODO Auto-generated method stub

             a=edt.getText().toString();
             a=a+"1";
             edt.setText(a);

         }
     });

     b2.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {
                     // TODO Auto-generated method stub

                     a=edt.getText().toString();
                     a=a+"2";
                     edt.setText(a);
                                         }
             });

     b3.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {
                     a=edt.getText().toString();
                     a=a+"3";
                     edt.setText(a);
                                         }
             });


     b4.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {
                     a=edt.getText().toString();
                     a=a+"4";
                     edt.setText(a);

                                         }
             });


     b5.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {

                     a=edt.getText().toString();
                     a=a+"5";
                     edt.setText(a);

                 }
             });


     b6.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {
                     // TODO Auto-generated method stub

                     a=edt.getText().toString();
                     a=a+"6";
                     edt.setText(a);
                                         }
             });


     b7.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {

                     a=edt.getText().toString();
                     a=a+"7";
                     edt.setText(a);
                                         }
             });


     b8.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {
                     // TODO Auto-generated method stub

                     a=edt.getText().toString();
                     a=a+"8";
                     edt.setText(a);

                 }
             });


     b9.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {
                     // TODO Auto-generated method stub

                     a=edt.getText().toString();
                     a=a+"9";
                     edt.setText(a);
                                         }
             });


     b10.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {
                     // TODO Auto-generated method stub

                     a=edt.getText().toString();
                     a=a+"0";
                     edt.setText(a);
                 }
             });


 b11.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {

                       aa=a; 
                       b=1;    
                       a="";
                       edt.setText("+");

                     edt.setText("");
          }
             });





     b12.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {

                     aa=a;
                     b=2;
                     a="";
                     edt.setText("-");
                     edt.setText("");

                 }
             });


     b13.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {
                     aa=a;
                     b=3;
                     a="";
                     edt.setText("*");
                     edt.setText("");

                 }
             });



     b14.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {
                     aa=a;
                     b=4;
                     a="";
                     edt.setText("/");
                     edt.setText("");

                 }
             });


     b15.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {

                     if(b==1){
                       c=Integer.parseInt(aa);

                       d=Integer.parseInt(a);             
                       r=c+d;
                     }
                     else
                     if(b==4){
                         c=Integer.parseInt(aa);
                       d=Integer.parseInt(a);
                       r=c/d; 
                     }else
                         if(b==2){
                             c=Integer.parseInt(aa);
                           d=Integer.parseInt(a);
                           r=c-d; 
                         }
                         else
                             if(b==3){
                                 c=Integer.parseInt(aa);
                               d=Integer.parseInt(a);
                               r=c*d; 
                             }
                     Toast.makeText(MainActivity.this, "Result is::"+r, 10000).show();
                     c=0;
                     b=0;
                     d=0;
                     a="";
                     aa="";
                     edt.setText("");
                 }
             });


     b16.setOnClickListener(new View.OnClickListener()
     {

                 public void onClick(View v) {
                     // TODO Auto-generated method stub

                 edt.setText("");
                 }
             });




 }`
BVR
  • 11
  • 2
0

Your above code was almost correct but small logic was missed in that programming . After clicking button it will store string values into "a" its ok . After that we click on operator symbol "a" will store into "aa" variable.

example:

a="4";
aa=a;//aa="4"

//After you do like this below way .

c=Integer.parseInt(aa)+Integer.parseInt(a);
//In the above line c (storing integer values) = 4+4;
//a having "4" and aa="4".
slavoo
  • 5,798
  • 64
  • 37
  • 39
BVR
  • 11
  • 2