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

0 امتیاز
26 بازدید
سوال شده دی 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());
      }
    });
  }
}

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

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

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

1,020 سوال

847 پاسخ

1,359 دیدگاه

1,338 کاربر

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

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