PDA

View Full Version : Java Problem



Farin
18.04.2005, 15:47
Also ich hab folgendes Problem:

Hab bei Java ne Funktion die sieht so aus:


function mwstberechnung()
{
var x;
var y;
var z;
x=mwstform.nettopreis.value;
y=x*0.16;
mwstform.mwst.value=y;
z=x+y
mwstform.bp.value=bp
}
Zur Erklärung es geht um ne Berechnung von der Mehrwertsteuer. Danach soll der Bruttobetrag und die Mehrwertsteuer angezeigt werden.
(Kann auch gerne die ganze Html Seite hier rein Schreiben wens nötig sein sollte, aber ich vermute den Fehler hier)

das Problem ist nur, dass der bei z nicht x + y rechnet, sondern die beiden Zahlen einfach hintereinander schreibt. Also wenn ich für x 100 eingebe kommt 10016 raus, obwohl da eigentlich 116 stehen sollte.
Wenn ich da "-" hinschreibe rechnet er allerdings. Wo liegt das Problem? Gibt es für "+" ein anderes zeichen bei Java oder was?

Tomarus
18.04.2005, 16:22
Also einmal, das ist Javascript, nicht Java. Allerdings ... folgender Code funktioniert bei mir perfekt (ich habe mal die Abfrage der Formulareingaben weggelassen):


<script type="text/javascript">
<!--
var x = 100;
var y = x * 0.16;
var z = x + y;
document.write (z);
-->
</script>

Weiß nicht, woran's bei dir liegt, an dem fehlenden ; sollte es ja in JS nicht scheitern. Aber dieser Code hier funktioniert ... an deinen angepasst sähe der also so aus:


<script type="text/javascript">
<!--
var x = document.mwstform.nettopreis.value;
var y = x * 0.16;
document.mwstform.mwst.value = y;
var z = x + y;
document.mwstform.bp.value = z;
-->
</script>

[edit] Allerdings liegt's vielleicht daran, dass er die Eingaben des Formulars als Strings sieht - die schreibt er hintereinander, wenn da ein Plus steht, nur Zahlen addiert er. Da er beim Minus nichts anderes machen kann, wandelt er den String der Eingabe in die richtige Zahl um ... vielleicht ist das der Fehler.

Farin
18.04.2005, 17:00
bei mir siehts jetzt so aus. mit deinem Vorschlag hab ichs versucht, dann gings aber gar nicht mehr. Gut jetzt gehts auch nicht mehr, da er nicht mehr rechnet, aber ich weiß nicht warum.
bei deinem edit hab ich auch nicht so ganz kapiert, was du meintest.

deine Vorschläge habens bei mir auch nicht getan. Da kamen immer Fehlermeldungen, dass mwstform nicht definiert sei, oder so

hier ist das, was ich im Moment habe. Und das nicht richtig funktioniert:


<html>

<head>

<title>mwst Berechnung</title>
</head>

<body>
<script language="JavaScript">
function mwstb()
{
var np;
var mw;
var bp;
np=mwstform.nettopreis.value;
mw=np*0.16;
mwstform.mwst.value=mw;
bp=np+mw;
mwstform.bruttopreis.value=bp;
}
</script>

<form name="mwstform">


<p>Nettopreis <input type="text" name="nettopreis" size="10"></p>
<p><input type="button" value="Rechne!" onclick="mwstb()"></p>
<p>MwSt <input type="text" name="mwst" size="10"></p>
<p>Bruttopreis <input type="text" name="bruttopreis" size="10"></p>

</form>

</body>

</html>

Latency
18.04.2005, 17:24
[edit] Allerdings liegt's vielleicht daran, dass er die Eingaben des Formulars als Strings sieht - die schreibt er hintereinander, wenn da ein Plus steht, nur Zahlen addiert er. Da er beim Minus nichts anderes machen kann, wandelt er den String der Eingabe in die richtige Zahl um ... vielleicht ist das der Fehler.
Das halte ich für am warscheinlichsten. Deswegen würde ich an deiner Stelle versuchen

z = x + y + 0 zu schreiben. Dann müsste er es nämlich implizit zu einem numerischen Wert casten und die Berechnung durchführen.

Farin
18.04.2005, 17:29
Das halte ich für am warscheinlichsten. Deswegen würde ich an deiner Stelle versuchen

z = x + y + 0 zu schreiben. Dann müsste er es nämlich implizit zu einem numerischen Wert casten und die Berechnung durchführen.

Hab ich porbiert. Also hier

bp=np+mw
(z=x+y) hab jetzt andere variablen

noch + 0 hinten rangehangen.
dann kommt 100160 raus (beim Beispielnettowert 100) also einfach nur eine 0 hinten rangehängt. Klappt also auch nicht.

Rolus
18.04.2005, 17:37
Das Problem ist, dass np ein String (Zeichenkette) ist, da du np aus einem Textfeld geholt hast. Da np ein String ist, werden np und mw wie Strings verbunden und nicht wie Zahlen addiert. Du musst np also in einen Zahlenwert (heißt in JS Number) umwandeln, was du mit der Funktion Number() erreichen kannst. Am besten direkt nach dem Holen, also so:

np=mwstform.nettopreis.value;
np = Number(np);
Wir übergeben der Number-Funktion den String np und erhalten dafür eine Number zurück, die wir in np speichern. That's all.
Btw, was hat das mit Java zu tun? Javascript ist nicht Java.

freundliche Grüße, Rolus

Farin
18.04.2005, 19:21
Gut danke jetzt funktionierts.
Die Variable hatte unser Lehrer festgelegt. Deswegen dachte ich nicht, das daran was falsch sein könnte. Und deshalb habe ich sie im ersten beispiel erfach durch x, y und z ersetzt.


Btw, was hat das mit Java zu tun? Javascript ist nicht Java.

Eh ja ... wusst ich nicht. Wird nicht wieder vorkommen.