|
You last visited: Today at 03:56
Advertisement
Counter zurücksetzen
Discussion on Counter zurücksetzen within the General Coding forum part of the Coders Den category.
10/20/2014, 20:05
|
#1
|
elite*gold: 0
Join Date: Oct 2011
Posts: 4,608
Received Thanks: 675
|
Counter zurücksetzen
Moin Com,
hab folgendes Problem:
Code:
double x;
int sz = Integer.parseInt(jLabel3.getText());
sz = sz+1;
jLabel3.setText(""+sz);
x = Math.random();
if (x<=0.8){
JOptionPane.showMessageDialog(null,"Erfolg!","Erfolg!", JOptionPane.WARNING_MESSAGE);}
if (x>0.8){
JOptionPane.showMessageDialog(null,"Fehlgeschlagen!","Inane error", JOptionPane.ERROR_MESSAGE);}
Dadurch wird ja pro Klick +1 gerechnet, egal ob Erfolg oder Fehlschlag.
Hab daneben einfach einen Resetbutton und wenn Erfolg war muss man manuell da raufdrücken.
Würde es aber nun gerne so machen, wenn ein Fehlschlag war, dann +1 und nach dem nächsten Klick wieder +1. Sollte jedoch ein Erfolg sein, dann +1 und nach dem nächsten Klick steht dann "1" da.
Also Label=0 -> 0 Versuche, da noch nix gemacht.
Fehlschlag=1 -> 1. Versuch
Erfolg =2 -> 2. Versuch
Fehlschlag=1. -> 1. Versuch
Wäre dankbar für Hilfe
|
|
|
10/21/2014, 08:22
|
#2
|
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
|
So wie ich dich verstanden hab, möchstest du das nur dann hochgezählt wird wenns ein Erfolg oder Fehlschlag ist oder?
Code:
sz += 1; // oder sz = sz + 1;
Dort hochzählen, wo du den Erfolg bzw. Fehlschlag hast. Laut dem Code wäre das in deiner if-Abfrage.
Edit:
Falls du meinst das wenn Erfolg zB. 3x war, ist dein Zähler bei 3, du dann aber dann 2x hintereinander Fehlschlag hast, der Counter auf 2 steht, dann kannst du entweder 2Counter bauen, einen für die Erfolge und den anderen für die Fehlschläger oder es so machen:
Code:
double x;
int sz = Integer.parseInt(jLabel3.getText());
jLabel3.setText(""+sz);
x = Math.random();
if (x<=0.8){
sz += 1;
JOptionPane.showMessageDialog(null,"Erfolg!","Erfolg!", JOptionPane.WARNING_MESSAGE);
}
if (x>0.8){
sz = 0;
sz += 1;
JOptionPane.showMessageDialog(null,"Fehlgeschlagen!","Inane error", JOptionPane.ERROR_MESSAGE);
}
|
|
|
10/21/2014, 11:14
|
#3
|
elite*gold: 0
Join Date: Oct 2011
Posts: 4,608
Received Thanks: 675
|
Quote:
Originally Posted by XxharCs
So wie ich dich verstanden hab, möchstest du das nur dann hochgezählt wird wenns ein Erfolg oder Fehlschlag ist oder?
Code:
sz += 1; // oder sz = sz + 1;
Dort hochzählen, wo du den Erfolg bzw. Fehlschlag hast. Laut dem Code wäre das in deiner if-Abfrage.
Edit:
Falls du meinst das wenn Erfolg zB. 3x war, ist dein Zähler bei 3, du dann aber dann 2x hintereinander Fehlschlag hast, der Counter auf 2 steht, dann kannst du entweder 2Counter bauen, einen für die Erfolge und den anderen für die Fehlschläger oder es so machen:
Code:
double x;
int sz = Integer.parseInt(jLabel3.getText());
jLabel3.setText(""+sz);
x = Math.random();
if (x<=0.8){
sz += 1;
JOptionPane.showMessageDialog(null,"Erfolg!","Erfolg!", JOptionPane.WARNING_MESSAGE);
}
if (x>0.8){
sz = 0;
sz += 1;
JOptionPane.showMessageDialog(null,"Fehlgeschlagen!","Inane error", JOptionPane.ERROR_MESSAGE);
}
|
Danke, aber hilft mir (glaube) auch nicht weiter.
Wenn ich 8 Fehlschläge habe steht der Counter auf 8.
Wenn ich einen Erfolg habe steht der Couter danach auf 9.
Egal ob der nächste Versuch ein Erfolg oder Fehlschlag ist, soll dann "1" da stehen, für den ersten Verusch nach dem Erfolg.
|
|
|
10/21/2014, 12:15
|
#4
|
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
|
Dann würd ich das so ca. machen(perfomance etc. nicht beachtet, einfach nur hingeschrieben  )
Code:
double x;
int cErfolg = 0;
int cFehlschlag = 0;
int sz = 0;
x = Math.random();
if(cErfolg == 0) {
sz = cFehlschlag;
}else if(cFehlschlag == 0) {
sz = cErfolg;
}
jLabel3.setText(""+sz);
if (x<=0.8){
cFehlschlag = 0;
cErfolg += 1;
JOptionPane.showMessageDialog(null,"Erfolg!","Erfolg!", JOptionPane.WARNING_MESSAGE);
}
if (x>0.8){
cErfolg = 0;
cFehlschlag += 1;
JOptionPane.showMessageDialog(null,"Fehlgeschlagen!","Inane error", JOptionPane.ERROR_MESSAGE);
}
|
|
|
10/21/2014, 16:44
|
#5
|
elite*gold: 0
Join Date: Oct 2011
Posts: 4,608
Received Thanks: 675
|
Quote:
Originally Posted by XxharCs
Dann würd ich das so ca. machen(perfomance etc. nicht beachtet, einfach nur hingeschrieben  )
Code:
double x;
int cErfolg = 0;
int cFehlschlag = 0;
int sz = 0;
x = Math.random();
if(cErfolg == 0) {
sz = cFehlschlag;
}else if(cFehlschlag == 0) {
sz = cErfolg;
}
jLabel3.setText(""+sz);
if (x<=0.8){
cFehlschlag = 0;
cErfolg += 1;
JOptionPane.showMessageDialog(null,"Erfolg!","Erfolg!", JOptionPane.WARNING_MESSAGE);
}
if (x>0.8){
cErfolg = 0;
cFehlschlag += 1;
JOptionPane.showMessageDialog(null,"Fehlgeschlagen!","Inane error", JOptionPane.ERROR_MESSAGE);
}
|
"sz" ist bei deiner Variante immer 0.
Code:
if(cErfolg == 0) {
sz = cFehlschlag;
}else if(cFehlschlag == 0) {
sz = cErfolg;
}
jLabel3.setText(""+sz);
.
Da du cFehlschlag 0 setzt am Anfang und cErfolg ebenfalls, kann nix andres rauskommen.
Btw.:Bei dir hier wird ja nur einmal das Label beschrieben, was am Anfang auch rein gar nix nützt, da wie gesagt 0 rauskommt. Dieses Problem wird wohl ein Rätsel bleiben
|
|
|
10/21/2014, 17:39
|
#6
|
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
|
Ich dachte du kannst daraus was herleiten, es ist klar das ich dir keinen ganz fehlerfreien Code gebe..
Und ich dachte das du schon weißt, wenn die Variablen innerhalb einer Methode initialisiert werden und diese Methode jedesmal aufgerufen wird, dass diese Variablen dann immer wieder neu initialisiert werden?.. Die Variablen sollten in dem/deinem Fall schon außerhalb der Methode deklariert und initialisiert werden..
Hier dann die komplette Lösung, da du ja nicht selbst draufkommen konntest
Code:
//Variablen deklarieren
double x;
int cErfolg;
int cFehlschlag;
int sz;
// Die Variablen evtl. im Konstruktor oder wo anders initialisieren wo sie nicht überschrieben werden durch neu Initialisierung
public Konstruktor() {
cErfolg = 0;
cFehlschlag = 0;
sz = 0;
}
// In deinem Fall ist die Methode wahrscheinlich actionPerformed vom ActionHandler
public void Methode() {
x = Math.random();
if (x<=0.8){
cFehlschlag = 0;
cErfolg += 1;
JOptionPane.showMessageDialog(null,"Erfolg!","Erfolg!", JOptionPane.WARNING_MESSAGE);
}
if (x>0.8){
cErfolg = 0;
cFehlschlag += 1;
JOptionPane.showMessageDialog(null,"Fehlgeschlagen!","Inane error", JOptionPane.ERROR_MESSAGE);
}
if(cErfolg == 0) {
sz = cFehlschlag;
}else if(cFehlschlag == 0) {
sz = cErfolg;
}
jLabel3.setText("" + sz);
}
|
|
|
10/21/2014, 18:13
|
#7
|
elite*gold: 0
Join Date: Oct 2011
Posts: 4,608
Received Thanks: 675
|
Ist mir klar, dass ich keine ganze kriege. Aber wie gesagt, auch nach diesem Ansatz ist und bleibt das Label bei 0 stehen. Ich hab bestimmt was falsch gemacht, aber mir egal, Thema abgehakt.
#edit jLabel hatte sich ja geändert bei mir.
Aber ist eben nicht so, wie ich wollte.
Ich arbeite mal weiter dranne.
Eig sollte er, wenn Erfolg, dann soll die Zahl da stehen bleiben und beim nächsten Klick wieder von vorne anfangen.
Dein Code zähl die Erfolge und sobald ein Feschlag kommt, setzt er den Code auf 1.
Haben wir dementsprechende aneinander vorbei geredet,
Danke trotzdem
|
|
|
All times are GMT +1. The time now is 03:58.
|
|