
ui_3k1
Gesperrt
- 197
Hey Leute,
ich bin seit kurzem dran einen "Bruchtrainings-Rechner" zu programmieren.
Eigentlich funktioniert alles prima, (das Kürzen werde ich später noch einfügen - kenne da ein gutes Verfahren mit dem Gauss-Alg.).
Allerdings gibt es ein RIESEN-MEGA Problem:
Ich lasse über einen Zufallsgenerator zahlen und auch den Rechenoperator (also +,-,*,/) "ziehen".
Wenn ich mir die ausgerechneten Werte anzeigen lasse, stimmt alles. Wenn ich aber in einer Nutzerabfrage die Eingabe tätige, stimmt es nie.
Die Nutzereingaben waren aber defintiv richtig (und auch in dem Format, in dem mein Programm die Eingabe haben will).
Ich denke es liegt am Timing zwischen der Abfrage und dem drücken des Buttons. Durch das Drücken werden ja schon wieder neue Werte generiert.
Hat jemand eine Idee wie ich das Problem in den Griff bekomme - ich bin doch ziemlich überfragt.
Hier mein Code (er sieht schlimm aus -.-):
Danke vorab!
Martin
ich bin seit kurzem dran einen "Bruchtrainings-Rechner" zu programmieren.
Eigentlich funktioniert alles prima, (das Kürzen werde ich später noch einfügen - kenne da ein gutes Verfahren mit dem Gauss-Alg.).
Allerdings gibt es ein RIESEN-MEGA Problem:
Ich lasse über einen Zufallsgenerator zahlen und auch den Rechenoperator (also +,-,*,/) "ziehen".
Wenn ich mir die ausgerechneten Werte anzeigen lasse, stimmt alles. Wenn ich aber in einer Nutzerabfrage die Eingabe tätige, stimmt es nie.
Die Nutzereingaben waren aber defintiv richtig (und auch in dem Format, in dem mein Programm die Eingabe haben will).
Ich denke es liegt am Timing zwischen der Abfrage und dem drücken des Buttons. Durch das Drücken werden ja schon wieder neue Werte generiert.
Hat jemand eine Idee wie ich das Problem in den Griff bekomme - ich bin doch ziemlich überfragt.
Hier mein Code (er sieht schlimm aus -.-):
Code:
package com.mpfeffer.nize;
import java.util.Random;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class FractionCoach extends Activity implements View.OnClickListener {
Button checkIt;
EditText z_, n_;
TextView z1_, z2_, n1_, n2_, op_, res, res2;
Random lou = new Random();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.fraction);
fractionMethod();
checkIt.setOnClickListener(this);
}
private void fractionMethod() { //VARIABLEN FÜR DIE XML
// TODO Auto-generated method stub
checkIt = (Button) findViewById(R.id.cheFra);
z_ = (EditText) findViewById(R.id.inZ); //Nutzer-Eingabe
n_ = (EditText) findViewById(R.id.inN); //des Zählers und des Nenners
z1_ = (TextView) findViewById(R.id.z1); //generierter Zähler
z2_ = (TextView) findViewById(R.id.z2); //g. Zähler2
n1_ = (TextView) findViewById(R.id.n1); //g. Nenner1
n2_ = (TextView) findViewById(R.id.n2); //g. Nenner2
op_ = (TextView) findViewById(R.id.op); //generierter Operator (+, -, x, /)
res = (TextView) findViewById(R.id.tvRes); //zeigt Ergebnis
res2 = (TextView) findViewById(R.id.tvRes2); //noch ein Ergebnisfeld
}
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
int opg = lou.nextInt(4); //lou => Zufallsgenerator
int zg1 = 2 + lou.nextInt(8);
int zg2 = 2 + lou.nextInt(8);
int ng1 = 2 + lou.nextInt(8);
int ng2 = 2 + lou.nextInt(8);
z1_.setText(Integer.toString(zg1)); //Zeigt die Werte der beiden Brüche an
z2_.setText(Integer.toString(zg2));
n1_.setText(Integer.toString(ng1));
n2_.setText(Integer.toString(ng2));
int numkor = 1; //Erstellung der korrekten
int denkor = 1; //Zähler und Nennervariablen
String num = z_.getText().toString(); //liest Zähler von Nutzer-Eingabe ein
String den = n_.getText().toString(); // Nenner
int numint = Integer.parseInt(num); //Umwandlung des Strings
int denint = Integer.parseInt(den);
switch (opg) { //Switch für Auswahl der Operation
case 0 :
op_.setText("+");
numkor = (zg1 * ng2) + (ng1 * zg2); //Berechnung der Brüche
denkor = ng1 * ng2;
res.setText(numkor + " / " + denkor);
break;
case 1 :
op_.setText("-");
numkor = (zg1 * ng2) - (ng1 * zg2); //Berechnung der Brüche
denkor = ng1 * ng2;
res.setText(numkor + " / " + denkor);//Ausgabe der Brüche
break;
case 2 :
op_.setText("x");
numkor = zg1 * zg2; //Berechnung der Brüche
denkor = ng1 * ng2;
res.setText(numkor + " / " + denkor);
break;
case 3 :
op_.setText("/");
numkor = zg1 * ng2; //Berechnung der Brüche
denkor = ng1 * zg2;
res.setText(numkor + " / " + denkor);
break;
} //if-Anweisung prüft
if (numint == numkor) { //Übereinstimmung des Zählers
res2.setText("okay!"); //(Nenner erstmal nicht wichtig)
} else {
res2.setText("nicht okay");
}
}
}
Martin
Zuletzt bearbeitet: