2016-08-19 1 views
0

Gerade begann Android-Codierung zu lernen. Ich kenne die Grundlagen von Java und verbessere es. Über Tasten gelernt und OnclickListeners so dachte ich an die Entwicklung eines einfachen Programms, um Tasten zu verwenden und entwarf einen Taschenrechner. Bitte hilf mir, wenn meine Logik stimmt. Wenn ich gleich (beq Knopf) drücke, funktioniert es nicht!Anfänger auf Android - OnClickListeners

int a, b, total,OP; 
    Button b1, b2, b3, b4, b5, b6, b7, b8, b9, b0, badd, bsub, bmul, bdiv, bclr, beq; 
    EditText et; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     b1 = (Button) findViewById(R.id.b1); 
     b2 = (Button) findViewById(R.id.b2); 
     b3 = (Button) findViewById(R.id.b3); 
     b4 = (Button) findViewById(R.id.b4); 
     b5 = (Button) findViewById(R.id.b5); 
     b6 = (Button) findViewById(R.id.b6); 
     b7 = (Button) findViewById(R.id.b7); 
     b8 = (Button) findViewById(R.id.b8); 
     b9 = (Button) findViewById(R.id.b9); 
     b0 = (Button) findViewById(R.id.b0); 
     badd = (Button) findViewById(R.id.add); 
     bsub = (Button) findViewById(R.id.sub); 
     bmul = (Button) findViewById(R.id.div); 
     bdiv = (Button) findViewById(R.id.mul); 
     bclr = (Button) findViewById(R.id.clr); 
     beq = (Button) findViewById(R.id.eq); 
     et = (EditText) findViewById(R.id.et); 

    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (et.equals("")) { 

       et.setText("1"); 
      } else { 

       et.append("1"); 
      } 
     } 
    }); 

    b2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (et.equals("")) { 

       et.setText("2"); 
      } else { 

       et.append("2"); 
      } 
     } 
    }); 
    b3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (et.equals("")) { 

       et.setText("3"); 
      } else { 

       et.append("3"); 
      } 
     } 
    }); 
    b4.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (et.equals("")) { 

       et.setText("4"); 
      } else { 

       et.append("4"); 
      } 
     } 
    }); 
    b5.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (et.equals("")) { 

       et.setText("5"); 
      } else { 

       et.append("5"); 
      } 
     } 
    }); 
    b6.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (et.equals("")) { 

       et.setText("6"); 
      } else { 

       et.append("6"); 
      } 
     } 
    }); 
    b7.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (et.equals("")) { 

       et.setText("7"); 
      } else { 

       et.append("7"); 
      } 
     } 
    }); 
    b8.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (et.equals("")) { 

       et.setText("8"); 
      } else { 

       et.append("8"); 
      } 
     } 
    }); 
    b9.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (et.equals("")) { 

       et.setText("9"); 
      } else { 

       et.append("9"); 
      } 
     } 
    }); 
    b0.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (et.equals("")) { 
       et.setText("0"); 
      } 
      else { 
       et.append("0"); 
      } 
     } 
    }); 
    badd.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      int a = Integer.parseInt(et.getText().toString()); 
      et.setText(""); 
      OP = 1; 
     } 
    }); 
    bsub.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      int a = Integer.parseInt(et.getText().toString()); 
      et.setText(""); 
      OP = 2; 
     } 
    }); 
    bdiv.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      int a = Integer.parseInt(et.getText().toString()); 
      et.setText(""); 
      OP = 3; 
     } 
    }); 
    bmul.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      int a = Integer.parseInt(et.getText().toString()); 
      et.setText(""); 
      OP = 4; 
     } 
    }); 
    bclr.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      et.setText(""); 
      a=0; 
      b=0; 
      total=0; 
      OP=0; 
     } 
    }); 
    beq.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      switch (OP){ 
       case 1: 
        b= Integer.parseInt(et.getText().toString()); 
        total=a+b; 
        et.setText(String.format("%d",total)); 
        break; 
       case 2: 
        b= Integer.parseInt(et.getText().toString()); 
        total=a-b; 
        et.setText(String.format("%d",total)); 
        break; 
       case 3: 
        b= Integer.parseInt(et.getText().toString()); 
        total=a/b; 
        et.setText(String.format("%d",total)); 
        break; 
       case 4: 
        b= Integer.parseInt(et.getText().toString()); 
        total=a*b; 
        et.setText(String.format("%d",total)); 
        break; 
       } 
      } 
     }); 
    } 
} 
+0

In 'onClick()' 'für beq', können Sie Wert überprüfen' total'. Tun Sie einfach 'System.out.println (total);'. Das Ergebnis wird in logcat unter 'System.out' angezeigt. –

+0

Sie könnten einen oder mehrere der folgenden Schritte ausführen; einen Unterbrechungspunkt hinzufügen und debuggen; fügen Sie einen Toast hinzu, der den Wert von OP a und b vor dem Wechsel überprüft; Standard hinzufügen, um einen Toast auszugeben. Sie können Log-Aufrufe ähnlich wie Toasts verwenden. Meine Vermutung ist, dass OP endet nicht 1,2,3 oder 4. – MikeT

Antwort

1

Änderung int a = Integer.parseInt(et.getText().toString()); in bsub,badd,bdiv,bmul

-a = Integer.parseInt(et.getText().toString());

+0

Vielen Dank, dass es funktioniert hat! –

+0

Die App funktioniert gut. Aber wenn ich Multiplikation mache, macht die App Division. Und wenn ich Division mache, macht es Multiplikation. Irgendwelche Vorschläge? –

+0

change 'bmul = (Schaltfläche) findViewById (R.id.div); bdiv = (Schaltfläche) findViewById (R.id.mul); 'zu' bdiv = (Schaltfläche) findViewById (R.id.div); bmul = (Schaltfläche) findViewById (R.id.mul); ' – abdelrhman

Verwandte Themen