پروژه ماشین حساب

0 امتیاز
87 بازدید
سوال شده اردیبهشت 5, 1395 توسط zamani  

سلام

من یک ماشین حساب ساده میخوام که اعشار بشه وارد کرد و مثل ماشین حساب ویندوز از دوتا ادیت تکست استفاده کرده باشه.

خیلی تو نت گشتم منتها کدی که هر دو امکان رو داشته باشه پیدا نکردم.

ممنون میشم راهنماییم کنید

 

 

activity_main.xml

<LinearLayout 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:orientation="vertical"
    tools:context=".Home"
    android:background="#fff" >

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text=""
        android:id = "@+id/display"
        android:hint="@string/dispHint" />

    <LinearLayout android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:paddingTop="20dp">
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/seven"
            android:text="@string/seven"
            />
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/eight"
            android:text="@string/eight"
            />
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/nine"
            android:text="@string/nine"
            />
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/div"
            android:text="@string/div"
            />
    </LinearLayout>
    <LinearLayout android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:paddingTop="20dp">
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/four"
            android:text="@string/four"
            />
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/five"
            android:text="@string/five"
            />
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/six"
            android:text="@string/six"
            />
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/mul"
            android:text="@string/mul"
            />
    </LinearLayout>
    <LinearLayout android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:paddingTop="20dp">
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/one"
            android:text="@string/one"
            />
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/two"
            android:text="@string/two"
            />
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/three"
            android:text="@string/three"
            />
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/sub"
            android:text="@string/sub"
            />
    </LinearLayout>
    <LinearLayout android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:paddingTop="20dp">
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/cancel"
            android:text="@string/cancel"
            />
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/zero"
            android:text="@string/zero"
            />
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/equal"
            android:text="@string/equal"
            />
        <Button
            android:layout_width="55dp"
            android:layout_height="wrap_content"
            android:id = "@+id/add"
            android:text="@string/add"
            />
    </LinearLayout>
</LinearLayout>

 

 

strings.xml

<resources>
<string name="app_name">Calculator</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_main">Calculator</string>
<string name="one">1</string>
<string name="eight">8</string>
<string name="nine">9</string>
<string name="two">2</string>
<string name="three">3</string>
<string name="four">4</string>
<string name="five">5</string>
<string name="six">6</string>
<string name="zero">0</string>
<string name="seven">7</string>
<string name="div">/</string>
<string name="mul">*</string>
<string name="sub">-</string>
<string name="equal">=</string>
<string name="cancel">C</string>
<string name="add">+</string>
<string name="disp">Enter Values</string>
<string name="dispHint">Calculator</string>
</resources>

 

MainActivity.java



import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.text.Editable;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends ActionBarActivity implements View.OnClickListener{


    Button one, two, three, four, five, six, seven, eight, nine, zero, add, sub, mul, div, cancel, equal;
    EditText disp;
    int op1;
    int op2;
    String optr;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);




        one = (Button) findViewById(R.id.one);
        two = (Button) findViewById(R.id.two);
        three = (Button) findViewById(R.id.three);
        four = (Button) findViewById(R.id.four);
        five = (Button) findViewById(R.id.five);
        six = (Button) findViewById(R.id.six);
        seven = (Button) findViewById(R.id.seven);
        eight = (Button) findViewById(R.id.eight);
        nine = (Button) findViewById(R.id.nine);
        zero = (Button) findViewById(R.id.zero);
        add = (Button) findViewById(R.id.add);
        sub = (Button) findViewById(R.id.sub);
        mul = (Button) findViewById(R.id.mul);
        div = (Button) findViewById(R.id.div);
        cancel = (Button) findViewById(R.id.cancel);
        equal = (Button) findViewById(R.id.equal);
        disp = (EditText) findViewById(R.id.display);




        try{
            one.setOnClickListener(this);

            two.setOnClickListener(this);

            three.setOnClickListener(this);

            four.setOnClickListener(this);

            five.setOnClickListener(this);

            six.setOnClickListener(this);

            seven.setOnClickListener(this);

            eight.setOnClickListener(this);

            nine.setOnClickListener(this);

            zero.setOnClickListener(this);

            cancel.setOnClickListener(this);

            add.setOnClickListener(this);

            sub.setOnClickListener(this);

            mul.setOnClickListener(this);

            div.setOnClickListener(this);

            equal.setOnClickListener(this);
        }
        catch(Exception e){

        }




    }



    public void operation(){
        if(optr.equals("+")){
            op2 = Integer.parseInt(disp.getText().toString());
            disp.setText("");
            op1 = op1 + op2;
            disp.setText("Result : " + Integer.toString(op1));
        }
        else if(optr.equals("-")){
            op2 = Integer.parseInt(disp.getText().toString());
            disp.setText("");
            op1 = op1 - op2;
            disp.setText("Result : " + Integer.toString(op1));
        }
        else if(optr.equals("*")){
            op2 = Integer.parseInt(disp.getText().toString());
            disp.setText("");
            op1 = op1 * op2;
            disp.setText("Result : " + Integer.toString(op1));
        }
        else if(optr.equals("/")){
            op2 = Integer.parseInt(disp.getText().toString());
            disp.setText("");
            op1 = op1 / op2;
            disp.setText("Result : " + Integer.toString(op1));
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override



        public void onClick(View arg0) {
            Editable str =  disp.getText();
            switch(arg0.getId()){
                case R.id.one:
                    if(op2 != 0){
                        op2 = 0;
                        disp.setText("");
                    }
                    str = str.append(one.getText());
                    disp.setText(str);
                    break;
                case R.id.two:
                    if(op2 != 0){
                        op2 = 0;
                        disp.setText("");
                    }
                    str = str.append(two.getText());
                    disp.setText(str);
                    break;
                case R.id.three:
                    if(op2 != 0){
                        op2 = 0;
                        disp.setText("");
                    }
                    str = str.append(three.getText());
                    disp.setText(str);
                    break;
                case R.id.four:
                    if(op2 != 0){
                        op2 = 0;
                        disp.setText("");
                    }
                    str = str.append(four.getText());
                    disp.setText(str);
                    break;
                case R.id.five:
                    if(op2 != 0){
                        op2 = 0;
                        disp.setText("");
                    }
                    str = str.append(five.getText());
                    disp.setText(str);
                    break;
                case R.id.six:
                    if(op2 != 0){
                        op2 = 0;
                        disp.setText("");
                    }
                    str = str.append(six.getText());
                    disp.setText(str);
                    break;
                case R.id.seven:
                    if(op2 != 0){
                        op2 = 0;
                        disp.setText("");
                    }
                    str = str.append(seven.getText());
                    disp.setText(str);
                    break;
                case R.id.eight:
                    if(op2 != 0){
                        op2 = 0;
                        disp.setText("");
                    }
                    str = str.append(eight.getText());
                    disp.setText(str);

                    break;
                case R.id.nine:
                    if(op2 != 0){
                        op2 = 0;
                        disp.setText("");
                    }
                    str = str.append(nine.getText());
                    disp.setText(str);

                    break;
                case R.id.zero:
                    if(op2 != 0){
                        op2 = 0;
                        disp.setText("");
                    }
                    str = str.append(zero.getText());
                    disp.setText(str);

                    break;
                case R.id.cancel:
                    op1 = 0;
                    op2 = 0;
                    disp.setText("");
                    disp.setHint("Perform Operation :)");

                    break;
                case R.id.add:
                    optr = "+";
                    if(op1 == 0){
                        op1 = Integer.parseInt(disp.getText().toString());
                        disp.setText("");
                    }
                    else if(op2 != 0){
                        op2 = 0;
                        disp.setText("");
                    }
                    else{
                        op2 = Integer.parseInt(disp.getText().toString());
                        disp.setText("");
                        op1 = op1 + op2;
                        disp.setText("Result : " + Integer.toString(op1));
                    }
                    break;
                case R.id.sub:
                    optr = "-";
                    if(op1 == 0){
                        op1 = Integer.parseInt(disp.getText().toString());
                        disp.setText("");
                    }
                    else if(op2 != 0){
                        op2 = 0;
                        disp.setText("");
                    }
                    else{
                        op2 = Integer.parseInt(disp.getText().toString());
                        disp.setText("");
                        op1 = op1 - op2;
                        disp.setText("Result : " + Integer.toString(op1));
                    }
                    break;
                case R.id.mul:
                    optr = "*";
                    if(op1 == 0){
                        op1 = Integer.parseInt(disp.getText().toString());
                        disp.setText("");
                    }
                    else if(op2 != 0){
                        op2 = 0;
                        disp.setText("");
                    }
                    else{
                        op2 = Integer.parseInt(disp.getText().toString());
                        disp.setText("");
                        op1 = op1 * op2;
                        disp.setText("Result : " + Integer.toString(op1));
                    }
                    break;
                case R.id.div:
                    optr = "/";
                    if(op1 == 0){
                        op1 = Integer.parseInt(disp.getText().toString());
                        disp.setText("");
                    }
                    else if(op2 != 0){
                        op2 = 0;
                        disp.setText("");
                    }
                    else{
                        op2 = Integer.parseInt(disp.getText().toString());
                        disp.setText("");
                        op1 = op1 / op2;
                        disp.setText("Result : " + Integer.toString(op1));
                    }
                    break;
                case R.id.equal:
                    if(!optr.equals(null)){
                        if(op2 != 0){
                            if(optr.equals("+")){
                                disp.setText("");
                            /*op1 = op1 + op2;*/
                                disp.setText("Result : " + Integer.toString(op1));
                            }
                            else if(optr.equals("-")){
                                disp.setText("");/*
                            op1 = op1 - op2;*/
                                disp.setText("Result : " + Integer.toString(op1));
                            }
                            else if(optr.equals("*")){
                                disp.setText("");/*
                            op1 = op1 * op2;*/
                                disp.setText("Result : " + Integer.toString(op1));
                            }
                            else if(optr.equals("/")){
                                disp.setText("");/*
                            op1 = op1 / op2;*/
                                disp.setText("Result : " + Integer.toString(op1));
                            }
                        }
                        else{
                            operation();
                        }
                    }
                    break;
            }
        }

    }

 

این مطلب را به اشتراک بگذارید
دارای دیدگاه اردیبهشت 6, 1395 توسط ASHKARAN  
با عرض سلام

لطفا کمی هدفتون رو بهتر و بیشتر توضیح بدید
دارای دیدگاه اردیبهشت 6, 1395 توسط zamani  

چیزی که میخواستم یه چیزی شبیه به این عکس هستش

http://answers.uncox.com/android/question/5341/%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%85%D8%A7%D8%B4%DB%8C%D9%86-%D8%AD%D8%B3%D8%A7%D8%A8 

دوتا تکست ویو داره و دکمه اعشار

کد لینکی که گذاشتم کد پاک کردن نداره و بعضی جاهاش رو نمی فهمم.

کدی که توی بخش سوالام گذاشتم راحتتره فقط  تکست ویو یه دونه داره و اعشار نداره.

می خواستم توی کدی که براتون توی بخش سوال گذاشتم این تغییرات اعمال بشه .

ممنون میشم کمکم کنید.

 

دارای دیدگاه اردیبهشت 6, 1395 توسط ASHKARAN  

کد نوشتن بنده و یا دوستان دیگر به درد شما نمی خوره....

سعی کنید خودتون برنامه رو کامل کنید.

شما خیلی راحت تر از اینها هم می تونید این برنامه رو بنویسید....

برای مثال اصلا نیاز نیست Button ها رو تعریف کنید و به اونها  onClickListener بدید !

کافیه تو کد XML یک تابع onClickبهشون بدید.....

با اینکار کلی کدتون خلوت تر میشه.....

اگر این عکس رو به عنوان نمونه قرار بدیم.....

با کلیک روی هر دکمه مقدارش باید به  TextView بالا اضافه بشه....

برای مثال اگر دکمه ۱ فشرده شد :

TopTextView.append("1");

این کد در مورد تمام دکمه ها به یک شکله و هر بار تنها مقداری که به TextView اضافه میشه متفاوته....

تنها دکمه  =  و  پاک کردن دستوراتش فرق داره.....

برای پاک کردن متن هم کافیه از یک دستور subString  استفاده کنید.....

String text = TopTextView.getText().toString();
TopTextView.setText(text.substring(0, text.length() - 1));

تنها قسمت این برنامه که شاید اذیتتون کنه عملگر مساویه که قراره نتایج رو بهتون نشون بده.....

در این قسمت شما باید کل متن قابل محاسبه رو درون یک متغیر از نوع رشته بریزید....

String text = TopTextView.getText().toString();

حالا شما باید  با توجه به اولویت ها بین جمع - ضرب - تقسیم و تفریق محاسبات رو انجام بدید....

کمی روی برنامتون کار کنید، تا جایی که می تونید تلاش کنید و از کسی کمک نگیرید....

اگر به جواب رسیدید به عنوان پاسخ ارسال بفرمایید تا دیگران هم استفاده کنند، اما اگر به نتیجه نرسیدید باز هم سوالاتتون رو مطرح بفرمایید بیشتر روش کار می کنیم....

 

لطفا وارد شده یا عضو شوید تا بتوانید سوال بپرسید

977 سوال

819 پاسخ

1,329 دیدگاه

1,273 کاربر

متاسفانه نیستم

این مطلب را به اشتراک بگذارید

ali.ashkaran@gmail
ما .....
  • سعی بر پاسخگویی به سوالات دیگران داریم.
  • به سوال و یا نظر دیگران احترام می گذاریم .
  • این وبسایت را به دیگران معرفی می کنیم.
  • همواره صمیمیت و ادب را رعایت می کنیم.
  • به سوالمان برچسب های مرتبط اضافه می کنیم.
  • در حین طرح سوال فرد خاصی را مخاطب قرار نمی دهیم .
...