Javascript summe berechnene?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

prompt() gibt einen String zurück.

"1" + "2" ist "12", denn Strings werden durch ein Plus einfach aneinandergefügt.

Was du brauchst sind Zahlen anstatt Zeichen. 1 + 2 ist, wie erwartet, 3. Um also aus dem Eingabe-String eine Zahl zu machen, mit der du rechnen kannst, musst du die Funktion parseInt(), parseFloat() oder Number() verwenden. Hier ist vermutlich ersteres die beste Lösung.

Mach also bei allen drei Eingaben noch ein parseInt() um das prompt().

zahl1 = parseInt( prompt("Geben sie eine Zahl ein!") );
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
einefragevon31 
Fragesteller
 19.09.2021, 15:55

bei mir funktioniert dies noch nicht ganz... jetzt bekomme ich keine eingabe aufforderung mehr. ich habe jetzt deine zeile kopiert und durch meine zeilen ersetzt

0

@MrAmazing2 hat ja bereits beschrieben, wo der Fehler liegt.

Allerdings wäre mir die Eingabe einzelner Zahlen und deren Berechnung nicht flexibel genug.

Wenn Du schon eine Abfrage machst und nur ein Ergebnis erwartest , kannst Du auch die ganze Formel in einem Rutsch entgegennehmen.

Ganz egal wie komplex die in der nachfolgenden Demo eingegebene Aufgabe ist, sie wird klaglos berechnet.

Eval() kann Strings als JavaScriptcode ausführen. Ergo auch komplette Formeln berechnen, als hättest Du diese in Dein Script geschrieben.

Im Beispiel wird nicht geprüft, was ein Nutzer eingibt. Aus Sicherheitsgründen sollte man unter realen Bedingungen per RegEx festlegen, was als Eingabe gestattet ist und/oder per try und catch fehlerhaften Eval-code behandeln.

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
Formel= prompt('Gib Deine zu berechnende Formel ein');
Ergebnis= eval(Formel);
document.getElementById("demo").innerHTML = Formel + ' = ' + Ergebnis; 
</script>
</body>
</html>

...gib einfach mal 1 + 2 + 3 ein...

Von Experte MrAmazing2 bestätigt

Schreibe unten:

parseInt( zahl1 ) + parseInt( zahl2 ) + parseInt( zahl3 )

+ kann Zeichenketten (Strings) aneinander ketten oder Zahlen addieren.

prompt liefert Zeichenketten. parseInt(.) macht daraus eine Zahl ohne Nachkommastellen.

einefragevon31 
Fragesteller
 19.09.2021, 15:43

Danke, was genau meinst du mit parselnt? ich habe dass jetzt so verstanden, dass ich die " werte" einzeln in klammern setzten muss

0
einefragevon31 
Fragesteller
 19.09.2021, 16:02
@gogogo

Ja, danke. Ich verstehe dies leider immer noch nicht. Wo würdest du dies einsetzen, gibt es noch anderes abzuändern?

1
gogogo  19.09.2021, 16:08
@einefragevon31

MrAmazing hat das gut beschrieben. Vermutlich am PC und nicht am SmartPhone.

Das parseInt muss irgendwo zwischen dem Funktionswert von promt(.) und der Addition vorkommen.

prompt(.) liefert beispielsweise "4711", eine Zeichenkette mit den eingetippten Zeichen.

Damit kann man aber nicht rechnen, auch nicht addieren. Das muss intern erst in eine Zahl gewandelt werden, damit das + eine Rechenoperation und kein Aneinanderhängen von Zeichenketten ist.

MrAmazing hat das gleich beim jedem prompt(.) gemacht, meine Lösung war, dass direkt in der Berechnung zu machen.

In diesem Beispiel ist das völlig egal. Bei größeren Programmen sollte es weitere Bedingungen geben, die die eine oder andere Variante bevorzugt.

2
einefragevon31 
Fragesteller
 19.09.2021, 16:10
@gogogo

trozdem danke, hat mir ja trozdem geholfen das weiter zu verstehen :)

1