PDA

View Full Version : راهنمایی برای ساخت ماشین حساب اندرویدی



sina4everafter
دوشنبه 01 اردیبهشت 1393, 15:30 عصر
سلام.
دوستان اگر امکانش هست من و راهنمایی کنید.ممنون.
من می خوام یه ماشین حساب بنویسم طوری که کاربر نخواد از کیبور گوشی استفاده کنه.مثه ماشین حساب خود اندروید اعداد و داشته باشه.همچنین ضرب و تقسیم و ...
من با استفاده از switch می خوام این کار و انجام بدم.منظورم اینه که اصلا نمی خوام برای هر دکمه onClickListener تعریف کنم.می خوام داخل case های switch آی دی دکمه ها بدم تا برنامه متوجه بشه که کدوم دکمه کلیک شده.من تا اینجای کار مشکلی ندارم.
مشکل من اینه که نمی دونم که چطور وقتی کاربر یه عددی و وارد کرد و بعد روی + کلیک کرد چه طور اون عدد قبلی و با این + و یا دستورات بعدی حساب کنه.

این هم کدمه.اگه میشه یه راهنمایی کنید.ممنون.
------------------------------------------------------
package ir.blog.javaroid.calculator;


import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.app.Activity;


public class MainActivity extends Activity implements OnClickListener{

//---All View---
EditText eText;
Button btn_Clear, btn_Zero, btn_One, btn_Two, btn_Three, btn_Four, btn_Five, btn_Six, btn_Seven, btn_Eight, btn_Nine, btn_Equals, btn_Divide,
btn_Multiply, btn_Plus, btn_Minus, btn_Float, btn_Del;//---End---
double numEquals = 0;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//---Link to the UI---
eText = (EditText) findViewById(R.id.eText_One_FL);
btn_Clear = (Button) findViewById(R.id.btn_Clear_FL);
btn_Zero = (Button) findViewById(R.id.btn_Zero_FL);
btn_One = (Button) findViewById(R.id.btn_One_FL);
btn_Two = (Button) findViewById(R.id.btn_Two_FL);
btn_Three = (Button) findViewById(R.id.btn_Three_FL);
btn_Four = (Button) findViewById(R.id.btn_Four_FL);
btn_Five = (Button) findViewById(R.id.btn_Five_FL);
btn_Six = (Button) findViewById(R.id.btn_Six_FL);
btn_Seven = (Button) findViewById(R.id.btn_Seven_FL);
btn_Eight = (Button) findViewById(R.id.btn_Eight_FL);
btn_Nine = (Button) findViewById(R.id.btn_Nine_FL);
btn_Equals = (Button) findViewById(R.id.btn_Equals_FL);
btn_Divide = (Button) findViewById(R.id.btn_Divide_FL);
btn_Multiply = (Button) findViewById(R.id.btn_Multyply_FL);
btn_Plus = (Button) findViewById(R.id.btn_Plus_FL);
btn_Minus = (Button) findViewById(R.id.btn_Minus_FL);
btn_Float = (Button) findViewById(R.id.btn_Float_FL);
btn_Del = (Button) findViewById(R.id.btn_Del_FL);//---End---

btn_One.setOnClickListener(this);
btn_Plus.setOnClickListener(this);
btn_Equals.setOnClickListener(this);
}


@Override
public void onClick(View whichBtn) {
switch (whichBtn.getId()) {
case R.id.btn_One_FL:
eText.setText(btn_One.getText().toString());
double num_One = Double.parseDouble(btn_One.getText().toString());
numEquals += num_One;
break;
case R.id.btn_Two_FL:
double num_Two = Double.parseDouble(btn_Two.getText().toString());
numEquals += num_Two;
}
switch (whichBtn.getId()) {
case R.id.btn_Plus_FL:
eText.setText(btn_Plus.getText().toString());
double getEText = Double.parseDouble(eText.getText().toString());
break;
case R.id.btn_Equals_FL:
String str = Double.toString(numEquals);
eText.setText(str);
}
}
}

parvizwpf
دوشنبه 01 اردیبهشت 1393, 15:43 عصر
double currentNumber=yout text;
//طبق which مورد نظر جمع یا منها یا ضرب یا ....
double result=result+currentNumber;

sina4everafter
دوشنبه 01 اردیبهشت 1393, 16:30 عصر
ممنون از راهنماییت.
مشکل من اینجاست که نمی دونم عدد هایی که بعد از جمع و تفریق میاد و چه طور حساب کنم.
من یکم کدم و عوض کردم و الان داخل کیس جمع اینطور نوشتم که محتویات EditText (که اولین عدد هست) و بگیر، خب حالا نمی دونم چطور دومین عدد و به این اضافه کنم.با آرایه ها میشه؟
نمی دونم متوجه سوالم شدین یانه.

saeed_g21
دوشنبه 01 اردیبهشت 1393, 16:40 عصر
بفرما

سوالی بود بپرس

import
android.app.ActionBar;

import
android.app.Activity;

import
android.os.Bundle;

import
android.view.LayoutInflater;

import
android.view.View;

import
android.view.View.OnClickListener;

import
android.widget.Button;

import
android.widget.EditText;

import
android.widget.ImageButton;

import
android.widget.TextView;


public
class calculator extends Activity implements OnClickListener

{

Button
nine,eig,sev,six,fiv,four,thr,two,one,zero,dot,plu s,mins,div,mul,eq,cl;

EditText
et;

String
s = "0";



long result = 0;


char lO = ' ';


@Override


protected void onCreate(Bundle savedInstanceState)

{


super.onCreate(savedInstanceState);

setContentView(R.layout.
calculator);


nine=(Button)findViewById(R.id.b9);


eig=(Button)findViewById(R.id.b8);


sev=(Button)findViewById(R.id.b7);


six=(Button)findViewById(R.id.b6);


fiv=(Button)findViewById(R.id.b5);


four=(Button)findViewById(R.id.b4);


thr=(Button)findViewById(R.id.b3);


two=(Button)findViewById(R.id.b2);


one=(Button)findViewById(R.id.b1);


zero=(Button)findViewById(R.id.b0);


dot=(Button)findViewById(R.id.bd);


plus=(Button)findViewById(R.id.bpl);


mins=(Button)findViewById(R.id.bmin);


div=(Button)findViewById(R.id.bdiv);


mul=(Button)findViewById(R.id.bmul);


eq=(Button)findViewById(R.id.beq);


cl=(Button)findViewById(R.id.bcl);


et=(EditText)findViewById(R.id.Etext);


nine.setOnClickListener(this);


eig.setOnClickListener(this);


sev.setOnClickListener(this);


six.setOnClickListener(this);


fiv.setOnClickListener(this);


four.setOnClickListener(this);


thr.setOnClickListener(this);


two.setOnClickListener(this);


one.setOnClickListener(this);


zero.setOnClickListener(this);


dot.setOnClickListener(this);


plus.setOnClickListener(this);


mins.setOnClickListener(this);


div.setOnClickListener(this);


mul.setOnClickListener(this);


eq.setOnClickListener(this);


cl.setOnClickListener(this);


et.setOnClickListener(this);

}


بقیه دارد در پست بعدی در یکجا نشد بفرستم

saeed_g21
دوشنبه 01 اردیبهشت 1393, 16:41 عصر
@Override


public void onClick(View v)

{


// TODO Auto-generated method stub


switch(v.getId())

{


case R.id.b0:


case R.id.b1:


case R.id.b2:


case R.id.b3:


case R.id.b4:


case R.id.b5:


case R.id.b6:


case R.id.b7:


case R.id.b8:


case R.id.b9:


String inDigit = ((Button) v).getText().toString();


if (s.equals("0"))

{


s= inDigit;

}


else

{


s+=inDigit;

}


et.setText(s);


if(lO == '=')

{


result=0;


lO =' ';

}


break;


case R.id.bpl:

compute();


lO = '+';


break;


case R.id.bmin:

compute();


lO = '-';


break;


case R.id.bdiv:

compute();


lO = '/';


break;


case R.id.bmul:

compute();


lO = '*';


break;


case R.id.beq:

compute();


lO = '=';


break;


case R.id.bcl:

String str=
et.getText().toString();


if (str.length() >1 ) {

str = str.substring(0, str.length() - 1);


et.setText(str);


s = str;

}


else if (str.length() <=1 ) {


et.setText("0");


result = 0;


s = "0";

}


break;

}

}



private void compute()

{


// TODO Auto-generated method stub


try{


long inNum = Integer.parseInt(s);


s = "0";


if (lO == ' ')

{


result = inNum;

}


else if (lO == '+')

{


result += inNum;

}


else if (lO == '-')

{


result -= inNum;

}


else if (lO == '*')

{


result *= inNum;

}


else if (lO == '/')

{


result /= inNum;

}


else if (lO == '=')

{



}


et.setText(String.valueOf(result));

}
catch(NumberFormatException e){


et.setText("");


et.setHint("راهنما");

}

}

sina4everafter
دوشنبه 01 اردیبهشت 1393, 17:07 عصر
ممنون.این و کار می کنم اگه ایرادی بود حتما می پرسم.بسیار ممنون.