Ir ao conteúdo
  • Cadastre-se

Calculadora em android studio - como travo os operadores?


Posts recomendados

Fala galerinha. To começando ai na programação e estou estudando aqui no Canadá. Então estou fazendo uma calculadora em Android Studio e está quase completa, porém falta 2 coisas essenciais. como eu faço pra bloquear os botões de operação (+-*/) depois de clicados? Fiz algo do tipo if(opClicked = true) com uma variavel booleana e passei o valor false após o uso mas n está funcionando. Alguém poderia me ajudar a resolver esse codigo? valeu gente.

 

package calculator_college.calculator; import android.icu.text.DecimalFormat; import android.icu.text.NumberFormat; import android.os.PersistableBundle; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity{
TextView textView;
double num1=0, num2=0, result = 0;
int operators = 0;
boolean opClicked = false;
boolean resultDone = false;


   @Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.result); }
       
   public void setOpClicked(View view) {

        Button temp = (Button) view;
        Log.d("OPBUTTON","button text: "+temp.getText().toString());
        num1 = Double.parseDouble(textView.getText().toString());
        switch (temp.getText().toString()) {
        case "+":
             operators = 1;
                 textView.setText("");
                 opClicked = true;
             break;

        case "-":
                operators = 2;
                    textView.setText("");
                    opClicked = true;
         break;

         case "X":
                operators = 3;
                     textView.setText("");
                     opClicked = true;
          break;

         case "/":
                  operators = 4;
                     textView.setText("");
                     opClicked = true;
          break;

          case "xY":
              operators = 5;
              textView.setText("");
              opClicked = true;
          break; 
           } 
          Log.d("OPBUTTON","Operator button: "+operators);
          Log.d("OPBUTTON", "num1: "+num1);

          if (resultDone) { 
              resultDone = false; } 
          }

    public void numClicked(View view) {

         if (textView.getText().equals("0.0")) {
                textView.setText("0");
           }
         String number = ((Button) view).getText().toString();
         TextView result = ((TextView)findViewById(R.id.result));
         result.setText(String.format("%s%s", result.getText().toString(), number));
}

public void resultClicked(View view) { 
    num2 = Double.parseDouble(textView.getText().toString());
    Log.d("OPBUTTON","num2: "+num2);
        switch (operators) {

           case 1:
              if(opClicked == true){
                 result = num1 + num2;
                 Log.d("RESULTBUTTON","result-direct: "+result);
                 opClicked = false;
          break;

          case 2:
             if (opClicked == true){
                 result = num1 - num2;
                 opClicked = false;
              } 
            break;

         case 3:
               if (opClicked == true){
                  result = num1 * num2;
                  opClicked = false;
                }
               break;
        
               case 4:
                  if (opClicked == true){
                      result = num1 / num2;
                      opClicked = false;
                   } break;

             case 5:
                  if (opClicked == true){
                      result = Math.pow(num1, num2);
                      opClicked = false;
                   }
                   break;
         }
public void delClicked(View view) {
     if (opClicked = true) {
           String s = textView.getText().toString();
           textView.setText("");
         
        for (int i = 0; i < s.length() - 1; i++) {
            textView.setText((String.format("%s%c", textView.getText().toString(), s.charAt(i))));
         }
         opClicked = false;
     }
  } 

  public void clearClicked(View view) {
          if (opClicked = true){
              textView.setText("");
              opClicked = false;
              num1 = 0.0;
              num2 = 0.0;
              result = 0.0;
              opClicked = false;
           }
    }
  public void percentageClick(View view) {

         if (opClicked == true) {
             num2 = Double.parseDouble(textView.getText().toString());
             if (num1 != 0) { result = (num1 * num2) / 100;
          }
         textView.setText(String.format("%s", result));
         Log.d("RESULTBUTTON", "result: " + result);
         opClicked = false;
       }
   }
public void pow2Clicked(View view) {
            if (opClicked) {
                 num1 = Double.parseDouble(textView.getText().toString());
                 result = num1 * num1;
                 int temp = (int) result; 
             }
            if (temp == (Double) result) {
                textView.setText(temp + "");
                num1 = Double.parseDouble(textView.getText().toString());
             } else {
                 textView.setText(result + "");
                 num1 = Double.parseDouble(textView.getText().toString());
             }
             opClicked = false;
           }
           Log.d("RESULTBUTTON","result: "+result);
}
public void sqrtClicked(View view) {
     if (opClicked == true) {
         num1 = Double.parseDouble(textView.getText().toString());
         textView.setText(Math.sqrt(num1) + "");
         opClicked = false;
      }
   }
}

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...