america1969
New member
[JavaScript] Bitte um Codecheck - Taschenrechner; Fehler "NaN" (Not a Number)
Liebes Forum,
ich möchte einen JavaScript-Taschenrechner programmieren, der z.B. ohne die geläufigen Funktionen "Math" und "Eval" und dergleichen auskommt.
Daher arbeite ich beim einlesen der Rechenoperation (z.B. "6-3=") mit zwei Arrays. So war halt meine Überlegung.
In einem Array speichere ich die eingegebenen Ziffern, im anderen den Operanden.
Gelöst habe (hätte) ich das mit einer "for"-Anweisung.
Als Rechenergebnis erhalte ich aber immer "NaN" (Not a number).
Könnt ihr mir bitte weiterhelfen.
Ich habe den Code derzeit auch so erweitert, dass fast bei jedem Schritt ein window.alert ausgegeben wird.
Da sieht man auch gut, dass meiner Meinung nach die Array nicht richtig beschrieben werden ...
Ich steh da echt an....
Vielen Dank, wenn ihr da einen tipp hättet (bitte nicht: kopiere dir einen funktionierenden Code aus dem Internet).
Liebe Grüße,
Robert
Hier der Code:
Liebes Forum,
ich möchte einen JavaScript-Taschenrechner programmieren, der z.B. ohne die geläufigen Funktionen "Math" und "Eval" und dergleichen auskommt.
Daher arbeite ich beim einlesen der Rechenoperation (z.B. "6-3=") mit zwei Arrays. So war halt meine Überlegung.
In einem Array speichere ich die eingegebenen Ziffern, im anderen den Operanden.
Gelöst habe (hätte) ich das mit einer "for"-Anweisung.
Als Rechenergebnis erhalte ich aber immer "NaN" (Not a number).
Könnt ihr mir bitte weiterhelfen.
Ich habe den Code derzeit auch so erweitert, dass fast bei jedem Schritt ein window.alert ausgegeben wird.
Da sieht man auch gut, dass meiner Meinung nach die Array nicht richtig beschrieben werden ...
Ich steh da echt an....
Vielen Dank, wenn ihr da einen tipp hättet (bitte nicht: kopiere dir einen funktionierenden Code aus dem Internet).
Liebe Grüße,
Robert
Hier der Code:
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Taschenrechner</title>
<style>
input{
width: 50px;
height: 50px;
}
</style>
<script>
var eingabe = ""
function add1(x, eingabe) {
eingabe += x;
//window.alert("Diese Zahl wurde gerade eingegeben und in den Wert x der function add1(x,eingabe) geschrieben: "+x)
//window.alert("Diese Zahl wurde gerade eingegeben und in den Wert eingabe der function add1(x,eingabe) geschrieben: "+eingabe)
document.getElementById("eingabe").innerHTML = eingabe;
return eingabe;
}
function add2(x, eingabe) {
eingabe += "" + x + "";
//window.alert("Dieses Zeichen wurde gerade eingegeben und in den Wert x der function add2(x,eingabe) geschrieben: "+x)
//window.alert("Dieses Zeichen wurde gerade eingegeben und in den Wert eingabe der function add2(x,eingabe) geschrieben: "+eingabe)
document.getElementById("eingabe").innerHTML = eingabe;
return eingabe;
}
function rechne(eingabe) {
var i = 0;
var j = 0;
var zahlen = new Array();
var zeichen = new Array();
var ergebnis = 0;
eingabe += "=";
window.alert("Das ergibt den gesamten Eingabestring: " + eingabe + "<Ende der Eingabe");
for (i = 0; eingabe.charAt(i) != '='; i++) {
if (eingabe.charAt(i) == '+' || eingabe.charAt(i) == '-' || eingabe.charAt(i) == '*' || eingabe.charAt(i) == '/') {
zeichen[j] = eingabe.charAt(i);
window.alert("Zeichen, das im Zeichen-Array an Position " + i + " steht: " + zeichen[j]);
//window.alert("Zeichen, das im Zeichen-Array an Position 0 steht" + zeichen[0]);
j++;
}
else {
window.alert("Zahl: " + (eingabe.charAt(i)));
zahlen[j] = parseInt(eingabe.charAt(i));
window.alert("Zahl, die im Zahlen-Array an Position " + i + " steht: " + zahlen[j]);
//window.alert("Zahl, die im Zahlen-Array an Position 1" + zahlen[1]);
j++;
}
}
ergebnis = zahlen[0]; //Warum wird hier nur zahlen0 abgefragt?? Vielleicht ist das Problem??
window.alert("Ergebniswert von zahlen0:"+ergebnis)
for (j = 1; j < zahlen.length; j++) {
if (zeichen[j] == '+') {
ergebnis += zahlen[j];
}
if (zeichen[j] == '-') {
ergebnis -= zahlen[j];
}
if (zeichen[j] == '*') {
ergebnis *= zahlen[j];
}
if (zeichen[j] == '/') {
ergebnis /= zahlen[j];
}
}
document.getElementById("eingabe").innerHTML = ergebnis;
window.alert("Ergebnis der Rechnung: "+ergebnis)
return ergebnis;
}
function remove_all(eingabe) {
eingabe = "";
document.getElementById("eingabe").innerHTML = 0;
return eingabe;
}
function remove_number(eingabe) {
eingabe.charAt(eingabe.length() - 2) = '';
document.getElementById("eingabe").innerHTML = eingabe;
return eingabe;
}
</script>
</head>
<body>
<p id="eingabe">0<br></p>
<form>
<input type="button" value="C" onclick="eingabe = remove_all(eingabe)">
<input type="button" value="<--" onclick="eingabe = remove_number(eingabe)"> <br>
<input type="button" value="7" onclick="eingabe = add1(7,eingabe)">
<input type="button" value="8" onclick="eingabe = add1(8,eingabe)">
<input type="button" value="9" onclick="eingabe = add1(9,eingabe)">
<input type="button" value="/" onclick="eingabe = add2('/',eingabe)"><br>
<input type="button" value="4" onclick="eingabe = add1(4,eingabe)">
<input type="button" value="5" onclick="eingabe = add1(5,eingabe)">
<input type="button" value="6" onclick="eingabe = add1(6,eingabe)">
<input type="button" value="x" onclick="eingabe = add2('*',eingabe)"> <br>
<input type="button" value="1" onclick="eingabe = add1(1,eingabe)">
<input type="button" value="2" onclick="eingabe = add1(2,eingabe)">
<input type="button" value="3" onclick="eingabe = add1(3,eingabe)">
<input type="button" value="-" onclick="eingabe = add2('-',eingabe)"> <br>
<input type="button" value="0" onclick="eingabe = add1(9,eingabe)">
<input type="button" value="," onclick="eingabe = add1(',',eingabe)">
<input type="button" value="=" onclick="ergebnis = rechne(eingabe)">
<input type="button" value="+" onclick="eingabe = add2('+',eingabe)">
</form>
</body>
</html>
Anhänge
Zuletzt bearbeitet von einem Moderator: