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

0 امتیاز
103 بازدید
سوال شده دی 4, 1398 توسط mohammadaminasadian  
package asadian.mohammadamin.calculator;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
  private double result=0;
  private String lastoperator;
  private double lastNumber;
  private boolean mustClearLcd;
  private boolean mustOverrideOperator;
  private Typeface lcdFont;
  private  int Reset;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lcdFont=Typeface.createFromAsset(getAssets(),"font.ttf");
    final Button btn0 = (Button) findViewById(R.id.btn0);
    Button btn1 = (Button) findViewById(R.id.btn1);
    Button btn2 = (Button) findViewById(R.id.btn2);
    Button btn3 = (Button) findViewById(R.id.btn3);
    Button btn4 = (Button) findViewById(R.id.btn4);
    Button btn5 = (Button) findViewById(R.id.btn5);
    Button btn6 = (Button) findViewById(R.id.btn6);
    Button btn7 = (Button) findViewById(R.id.btn7);
    Button btn8 = (Button) findViewById(R.id.btn8);
    Button btn9 = (Button) findViewById(R.id.btn9);
    Button btnPoint = (Button) findViewById(R.id.btnPoint);
    Button btnMultiply = (Button) findViewById(R.id.btnMultiply);
    Button btnMinus = (Button) findViewById(R.id.btnMinus);
    Button btnPlus = (Button) findViewById(R.id.btnPlus);
    Button btnDevide = (Button) findViewById(R.id.btnDevide);
    final Button btnEqual = (Button) findViewById(R.id.btnEqual);
    final Button btnClear = (Button) findViewById(R.id.btnClear);
    Button btnSin=(Button)findViewById(R.id.btnSin);
    Button btnCos=(Button)findViewById(R.id.btnCos);
    Button btnTan=(Button)findViewById(R.id.btnTan);
    Button btnSqrt=(Button)findViewById(R.id.btnSqrt);
    Button btnBack=(Button)findViewById(R.id.btnBack);
    final TextView txtMini = (TextView) findViewById(R.id.txtMini);
    final TextView txtResult = (TextView) findViewById(R.id.txtResult);
    txtResult.setTypeface(lcdFont);
    txtMini.setTypeface(lcdFont);
    View.OnClickListener operatorClickListener=new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        double number = Double.parseDouble(txtResult.getText().toString());
        Button btn = (Button) view;
        String operator = btn.getText().toString();
        mustClearLcd = true;
        if (mustOverrideOperator) {
          lastoperator = operator;
          // mustOverrideOperator=false;
          String oldMiniText = txtMini.getText().toString();
          String croppedString = oldMiniText.substring(0, oldMiniText.length() - 1);
          txtMini.setText(croppedString + operator);
          return;
        }
        String oldMiniText = txtMini.getText().toString();
        txtMini.setText(oldMiniText + number + operator);
        mustOverrideOperator = true;
        if (lastoperator == null) {
          lastNumber = number;
        } else {
           // double result = 0;
          if (lastoperator.equals("÷")) {
            result = lastNumber / number;
          } else if (lastoperator.equals("×")) {
            result = lastNumber * number;
          } else if (lastoperator.equals("+")) {
            result = lastNumber + number;
          } else if (lastoperator.equals("-")) {
            result = lastNumber - number;
          } else if (lastoperator.equals("=")) {
            txtResult.setText("" + result);
            lastNumber = result;
          }
        txtResult.setText("" + result);
        lastNumber = result;
        lastoperator = operator;
        return;
      }
      lastoperator=operator;
    }
    };
    View.OnClickListener numberClickListener=new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        mustOverrideOperator=false;

//                 switch (view.getId()){
//                     case R.id.btn0:
//                     break;
//                 }
        Button btn=(Button) view;
        String btnText=btn.getText().toString();
        String oldText=txtResult.getText().toString();
        if (lastoperator != null && lastoperator.equals("=")) {
          txtMini.setText("");
          txtResult.setText(btnText);
          lastNumber = 0;
          lastoperator = null;
          mustClearLcd = false;
          return;
        }
        if (mustClearLcd){
          txtResult.setText(btnText);
          mustClearLcd=false;
          return;
        }
        if (btnText.equals(".")){
          if (!oldText.contains(".")){
            txtResult.setText(oldText + btnText);
            return;
          }
          return;
        }
        if (oldText.equals("0")){
          txtResult.setText(btnText);
        }else{
        if (oldText.length()<15){
        txtResult.setText(oldText + btnText);
      }
        }
      }
    };
    btn0.setOnClickListener(numberClickListener);
    btn1.setOnClickListener(numberClickListener);
    btn2.setOnClickListener(numberClickListener);
    btn3.setOnClickListener(numberClickListener);
    btn4.setOnClickListener(numberClickListener);
    btn5.setOnClickListener(numberClickListener);
    btn6.setOnClickListener(numberClickListener);
    btn7.setOnClickListener(numberClickListener);
    btn8.setOnClickListener(numberClickListener);
    btn9.setOnClickListener(numberClickListener);
    btnPoint.setOnClickListener(numberClickListener);
    btnDevide.setOnClickListener(operatorClickListener);
    btnMultiply.setOnClickListener(operatorClickListener);
    btnPlus.setOnClickListener(operatorClickListener);
    btnMinus.setOnClickListener(operatorClickListener);
    btnEqual.setOnClickListener(operatorClickListener);
    btnClear.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        txtMini.setText("");
        txtResult.setText("0");
        mustClearLcd=false;
        mustOverrideOperator=false;
        lastNumber=0;
        lastoperator=null;
      }
    });
    btnBack.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        if (txtResult.length()==1){
          txtResult.setText("" + Reset);
        }else if (txtResult.length()>0){
          String oldText=txtResult.getText().toString();
          String croppedString = oldText.substring(0, oldText.length() - 1);
          txtResult.setText(croppedString);
        }
      }
    });
    btnSqrt.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        Double variable=Math.sqrt(Double.parseDouble(txtResult.getText().toString()));
        txtResult.setText(variable.toString());
      }
    });
    btnSin.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        Double variable=Math.sin(Double.parseDouble(txtResult.getText().toString()));
        txtResult.setText(variable.toString());
      }
    });
    btnCos.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        Double variable=Math.cos(Double.parseDouble(txtResult.getText().toString()));
        txtResult.setText(variable.toString());
      }
    });
    btnTan.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        Double variable=Math.tan(Double.parseDouble(txtResult.getText().toString()));
        txtResult.setText(variable.toString());
      }
    });
  }
}

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

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

2 پاسخ

0 امتیاز
پاسخ داده شده 9 اسفند 1399 توسط parisa  

سلام دوستان من آموزش نصب اندروید استودیو رو از اینجا دیدم و عالی بود. ولی الان می خوام روی اوبونتو نصب کنم کسی بلده آیا؟

دارای دیدگاه 13 اسفند 1399 توسط ASHKARAN  

تو این آدرس یه رشته استوری از نصب لینوکس گذاشتم

https://www.instagram.com/s/aGlnaGxpZ2h0OjE3ODQzNDkxMzMxNTMxMzg3?igshid=m9ibzdgdnl7&story_media_id=2508172267665621161_8182159985

اگر مشکلی داشتید می تونید سوالتون رو در وبسایت مطرح کنید

0 امتیاز
پاسخ داده شده 13 اسفند 1399 توسط ASHKARAN  

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

int val = new BigDecimal(stringValue).intValue();

 

1,082 سوال

901 پاسخ

1,396 دیدگاه

1,693 کاربر

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

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