Java: Potenzen berechnen?

  • Antworten:3
Jan
  • Forum-Beiträge: 9

28.02.2016, 02:10:20 via Website

Hallo zusammen,

probiere mich momentan an Potenzen in Java. Mein Code sieht wie folgt aus:

        final EditText basis = (EditText) findViewById(R.id.basis);
    final EditText potenz = (EditText) findViewById(R.id.potenz);
    Button btn = (Button) findViewById(R.id.button);
    final TextView tv = (TextView) findViewById(R.id.erg);

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

            float basistxt = Float.parseFloat(basis.getText().toString());
            float exponenttxt = Float.parseFloat(exponent.getText().toString());
            float rechnung = 0;

            for(int i = 0; i <= exponenttxt; i=i+1) {
                rechnung = basistxt * exponenttxt;
            }
            tv.setText(Float.toString(rechnung));



        }
    });

Nehmen wir an der Exponent ist 5. Theoretisch müsste er doch 5 mal die Basis * 5 nehmen, oder? Oder habe ich gerade nur einen Denkfehler bzw. einen Fehler im Code?

Bei 5^5 bekommt die App 25 raus.

Grüße,
Jan

Ps: Bin blutiger Anfänger. Also verzeiht mir bitte dumme Fehler. :)

— geändert am 28.02.2016, 02:19:56

Antworten
Gelöschter Account
  • Forum-Beiträge: 21.034

28.02.2016, 03:30:42 via Website

Deine For-Schleife rechnet bei jedem Durchlauf 5 * 5 und das ist 25. Sie rechnet nicht mit dem Ergebnis des vorangegangenen Durchlaufs.

Zudem durchläufst Du Deine For-Schleife einmal zuviel. Von 0 bis 5 sind 6 Schritte!

Und weil in meiner Abwandlung Deines Codes die Variable "rechnung" bereits vor der For-Schleife den Wert der Variable "basistxt" bekommen hat, darf die For-Schleife nur noch Exponent - 1 mal durchlaufen werden, was ich im Beispiel durch setzen des Startwertes für die Variable i auf 1 erreicht habe:.

        float rechnung = basistxt;

        for(int i = 1; i < exponenttxt; i=i+1) {
            rechnung = rechnung * exponenttxt;
        }
        tv.setText(Float.toString(rechnung));

Korrekt ist der Code aber auch noch nicht, denn 5^0 = 1. Hier kommt aber 5 raus. Und negative Exponenten berechnet der Code gar nicht. Das überlasse ich aber Dir. Ich will nicht zuviel auf einmal verändern.

— geändert am 28.02.2016, 04:02:45

Jan

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

28.02.2016, 08:54:40 via App

ich würd einfach Math.pow() nehmen. Damit werden dann die Potenzgesetze mit beachtet.

LG Pascal //It's not a bug, it's a feature. :) ;)

Jan

Antworten
Gelöschter Account
  • Forum-Beiträge: 21.034

28.02.2016, 12:50:12 via Website

Ich auch! Aber ich vermute, hier steht der Lerneffekt im Vordergrund.

Antworten