Einfaches Script, was ist falsch?

Hallo, mache gerade meine ersten lieben Erfahrungen mit Java. Es geht um einfache Berechnungen, wir haben 4 inputs und 4 Zahlen sollen wieder ausgegeben werden.
Ich hab mir das mit ein paar Tutorials und Beispielen so zusammengebastelt, aber es funzt jetzt noch nicht, und ich bin ein bisschen am Ende meiner Kräfte :slight_smile:

[CODE]

Dial Calculator
This site calculates how you can solve the dials in 4 steps.
This works for any input / starting combination.
The target combination is 2-7-4-6.



Initial yellow (top floor) number:
Initial orange (2nd floor) number:
Initial blue (3rd floor) number:
Initial purple (bottom floor) number:




<input type="reset"

[/CODE]falls das hier quatsch ist mit javascript bin ich ansonsten auch für alternative lösungen offen.

Du schreibst nicht Java sondern JavaScript. Bitte beachte diesen Unterschied, das sind 2 Welten.

Worin besteht denn das Problem? Ich rate mal: das Formular wird abgeschickt, das JavaScript scheinbar nicht ausgeführt, oder? Das könnte daran liegen, dass in der JavaScript-Funktion am Ende

return;

steht. Um das Abschicken des Formulars zu verhindern, müsste dort aber

return false;

stehen.

Sollte das Problem ein anderes sein, beschreib es bitte genauer.

JavaScript selbstverständlich, entschuldige den Fehler.

Ich habs nun in das „return false;“ geändert. Weiter hab ich diesen Fehler hier gefunden:

 document.writeln("Hit yellow " + resy " times");

statt

 document.writeln("Hit yellow " + resy + " times");

Jetzt geht es fast schon :slight_smile:

Der Alert wird ausgeführt, und der Output ist so etwas hier:

Hit yellow 20 times Hit orange -75 times Hit blue 02 times Hit purple -47 times

Die Zeilenabstände werd ich noch hinkriegen, was mich beunruhigt ist aber das total falsche Resultat :slight_smile: Das müsste Zahlen zwischen -10 und 20 geben. Und der soll mir 2 schreiben, nicht 02. Aber ich kuck ma selbst.

Das könnte daran liegen, dass Werte aus input-Feldern als String gewertet werden. Wandel sie erstmal mit parseInt() in einen Integer-Wert um, dann kannst Du auch damit leicht rechnen.

Weitere JavaScript-Fehler sollte dir die JavaScript-Konsole Deines Browsers verraten.

Also, ich versteh das wirklich nich. Ich hab jetzt die Zeilen

parseInt(y); parseInt(o); parseInt(b); parseInt(p);
drin.

Gebe ich zum Test diese Variablen aus, sieht das auch gut aus.

Aber der rechnet mir einfach nicht korrekt in diesen Zeilen hier:

resy = 4 - y + b - p; reso = -2 - b + p; resb = 5 - o + y; resp = 1 - p + o - y;

Was ist da los? Das ist doch in jeder Programmiersprache so ziemlich das grundlegendste. reso = -2 - b + p = -2 - 3 + 4, wie kann man da auf -54 kommen??? Tja, man rechne -2 - 3, da ist die -5, und dann noch die 4 hinter her. Der ist hier irgendwie wohl im Stringmodus. Aber wieso? Wieso rechnet er mir bei dem gleichen Input resy = 4 - y + b - p = 4 - 4 + 2 - 3 = -1 wiederum korrekt?
Muss ich etwa noch parseint(-2) schreiben oder wie? Wieso ist das hier so stringbasiert? Kann er nicht mehr wie 1 Operation pro Rechenzeile? Also Muss ich

 reso = -2 - b + p;

in

reso = -2; reso = reso - b; reso = reso + p;
ändern? Oder irgendwie

 reso = eval(-2 - b + p);

? Ich versteh das nich :wink:

y = parseInt(document.inputs.y.value); // usw.

That’s it. Herzlichsten Dank!

Hier kann man sich das Endresultat ankucken.

Die Fehlerkonsole hilft!