ورود

View Full Version : مشکل در الگوریتم ماشین حساب اندروید



modernserver
شنبه 30 مرداد 1395, 16:05 عصر
سلام
بنده دارم برنامه نویسی اندروید رو یاد میگیرم و الان دارم تمرین میکنم یه ماشین حساب اندروید درست میکنم مشکل تقسیم بر صفر رو با if else pg حل کردم

اما میخواستم وقتی در تکست ویو عدد اول صفر باشه و کاربر مثلا عدد یک رو نشون بده صفر رو پاک کنه و یک رو بزاره یعنی 01 نشه

برای حل این مشکل هم از if else کمک کردم اما فکر میکنم اگوریتمش اشتباهه و برای همین فورس کلوز میده


کد برنامه :

package com.sayeban.calc;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;


public class Main extends ActionBarActivity {

private TextView show;

private Button n0;
private Button n00;
private Button n1;
private Button n2;
private Button n3;
private Button n4;
private Button n5;
private Button n6;
private Button n7;
private Button n8;
private Button n9;

private Button sub;
private Button sum;
private Button zarb;
private Button tagh;
private Button res;
private Button ac;
private Button dot;

String F;
private int number1;
private int number2;
private int fres;
private int first0;




protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

show=(TextView) findViewById(R.id.main_txtshow);


n0=(Button) findViewById(R.id.main_n0);
n00=(Button) findViewById(R.id.main_doub0);
n1=(Button) findViewById(R.id.main_n1);
n2=(Button) findViewById(R.id.main_n2);
n3=(Button) findViewById(R.id.main_n3);
n4=(Button) findViewById(R.id.main_n4);
n5=(Button) findViewById(R.id.main_n5);
n6=(Button) findViewById(R.id.main_n6);
n7=(Button) findViewById(R.id.main_n7);
n8=(Button) findViewById(R.id.main_n8);
n9=(Button) findViewById(R.id.main_n9);

sub=(Button) findViewById(R.id.main_sub);
sum=(Button) findViewById(R.id.main_sum);
zarb=(Button) findViewById(R.id.main_zarb);
tagh=(Button) findViewById(R.id.main_taghsim);
res=(Button) findViewById(R.id.main_res);
ac=(Button) findViewById(R.id.main_ac);
dot=(Button) findViewById(R.id.main_dot);

n0.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

first0=Integer.parseInt(show.getText().toString()) ;

if (first0==0){

show.setText("0");
}

else {

show.setText(show.getText()+"0");
}

}
});

n00.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

first0=Integer.parseInt(show.getText().toString()) ;

if (first0==0){

show.setText("00");
}

else {

show.setText(show.getText()+"00");
}

}
});

n1.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {



first0=Integer.parseInt(show.getText().toString()) ;

if (first0==0 && show.getText()==""){

show.setText("1");
}

else {

show.setText(show.getText()+"1");
}


}
});

n2.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

first0=Integer.parseInt(show.getText().toString()) ;

if (first0==0 && show.getText()==""){

show.setText("2");
}

else {

show.setText(show.getText()+"2");
}


}
});

n3.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

first0=Integer.parseInt(show.getText().toString()) ;

if (first0==0 && show.getText()==""){

show.setText("3");
}

else {

show.setText(show.getText()+"3");
}


}
});


n4.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

first0=Integer.parseInt(show.getText().toString()) ;

if (first0==0 && show.getText()==""){

show.setText("4");
}

else {

show.setText(show.getText()+"4");
}

}
});



n5.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

first0=Integer.parseInt(show.getText().toString()) ;

if (first0==0 && show.getText()==""){

show.setText("5");
}

else {

show.setText(show.getText()+"5");
}


}
});


n6.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

first0=Integer.parseInt(show.getText().toString()) ;

if (first0==0 && show.getText()==""){

show.setText("6");
}

else {

show.setText(show.getText()+"6");
}



}
});


n7.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

first0=Integer.parseInt(show.getText().toString()) ;

if (first0==0 && show.getText()==""){

show.setText("7");
}

else {

show.setText(show.getText()+"7");
}


}
});


n8.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

first0=Integer.parseInt(show.getText().toString()) ;

if (first0==0 && show.getText()==""){

show.setText("8");
}

else {

show.setText(show.getText()+"8");
}



}
});


n9.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {


first0=Integer.parseInt(show.getText().toString()) ;

if (first0==0 && show.getText()==""){

show.setText("9");
}

else {

show.setText(show.getText()+"9");
}


}
});

sum.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {



number1=Integer.parseInt(show.getText().toString() );

show.setText("");

F="+";

}
});

sub.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

number1=Integer.parseInt(show.getText().toString() );

show.setText("");

F="-";



}
});


zarb.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

number1=Integer.parseInt(show.getText().toString() );

show.setText("");

F="*";



}
});


tagh.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

number1=Integer.parseInt(show.getText().toString() );

show.setText("");

F="/";



}
});

res.setOnClickListener(new OnClickListener() {

public void onClick(View arg0) {

number2=Integer.parseInt(show.getText().toString() );
show.setText("");

if (F=="+"){

fres=number1+number2;

}

if (F=="/"){

if(number2==0){

Toast.makeText(getApplicationContext(), "اشتباه ریاضیاتی : نمیتوان اعداد را بر صفر تقسیم کرد !", Toast.LENGTH_LONG).show();


}
else{

fres=number1/number2;

}

}

if (F=="-"){

fres=number1-number2;

}

if (F=="*"){

fres=number1*number2;

}

show.setText(fres+"");



}
});





}
}





البته مشکل اصلی در این قطعه کده


n1.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {



first0=Integer.parseInt(show.getText().toString()) ;

if (first0==0 && show.getText()==""){

show.setText("1");
}

else {

show.setText(show.getText()+"1");
}


}
});



پیشاپیش ممنون

modernserver
شنبه 30 مرداد 1395, 16:07 عصر
البته یه فصل از اموزشو دیدم و راه حلی جز if else بلد نیستم :لبخند:

msroid
شنبه 30 مرداد 1395, 16:45 عصر
سلام


String num = show.getText().toString();
if (!num.isEmpty() && num.equals("0"){
show.setText("1");
} else {
show.setText(num + "1");
}

modernserver
شنبه 30 مرداد 1395, 21:39 عصر
سلام


String num = show.getText().toString();
if (!num.isEmpty() && num.equals("0"){
show.setText("1");
} else {
show.setText(num + "1");
}


دست درد نکنه درست شد

فقط اشکال کار من کجاست و چرا روشم اشتباهه؟
isEmpety api 9 میخواد قبل از اندروید 2.3 برای اینکار از چه چیزی استفاده میکردن ؟

modernserver
یک شنبه 31 مرداد 1395, 23:40 عصر
کسی میتونه بگه اشکال کار من کجا بوده؟

msroid
دوشنبه 01 شهریور 1395, 07:53 صبح
توی بدنه if شرط هایی که گذاشته میشن به همون ترتیبی که هستن اجرا میشن. پس اول باید چک کنید که اون متغیر خالی نباشه و بعدش اگر خالی نبود حالا چک کنید ببینید آیا مقدارش صفر هست یا نه. شما دارید اول چک میکنید ببینید آیا مقدارش صفر هست یا نه و بعدش چک میکنید آیا خالی هم هست...!!

اگر خالی بوده باشه ارور ایجاد میشه و قابل تبدیل به مقدار Integer نخواهد بود...!! برای همین به int تبدیلش نمی کنیم بلکه به صورت همون رشته باهاش کار میکنیم.

وقتی هم از متد ()getText استفاده میکنید حتما از متد ()toString هم استفاده کنید تا مطمئن باشید خروجی حتما یک رشته خواهد بود چرا که ممکنه کاراکترهای غیر مجاز هم در مقدار خروجی وجود داشته باشه. خروجی متد ()getText از نوع Editable هست نه String.

برای مقایسه هم در Apiهای پایین تر از 9 میشد از متد ()equals استفاده کرد.