Hallo, ich habe Probleme bei der Umsetzung eines Struktogramms. Programm ist zwar HTML valide, auch läuft es ohne den Berechnungsteil durch, aber in dem habe ich irgendeinen Fehler, und weiss grad nicht woran es liegen könnte, vielleicht könnt ihr mir helfen.
Java:
//Variablen deklarierenvar anzahlPersonen;var fahrzeugGewicht;var ticketPreis;//Werteingabevar anzahlPersonen =parseInt(prompt("Gib die Anzahl der Personen ein:"));var fahrzeugGewicht =parseInt(prompt("Gib das Fahrzeuggewicht ein:"));//Berechnungif(anzahlPersonen >=1)||(fahrzeugGewicht >=1){ticketPreis=0;}{if(anzahlPersonen !>3){if(fahrzeugGewicht !>1000){ticketPreis=anzahlPersonen*35;}else{ticketPreis=50+anzahlPersonen*35;}}else{if(fahrzeugGewicht !>1000){ticketPreis=70+anzahlPersonen*20;}else{ticketPreis=150+anzahlPersonen*20;}}}else{alert ("Wert zu gering!");}//Ausgabe
alert ("Der Ticketpreis beträgt "+ ticketPreis +" Euro.");
PS. Ausserdem liefert der HTML-Validator Fehlermeldungen für "<" daher hab ich diese gegen ">=" oder "!>" getauscht - gibt es da eine elegantere Lösung...?
Kannst du nicht mal beschreiben was dein Fehler ist, oder sollen wir raten
>PS. Ausserdem liefert der HTML-Validator Fehlermeldungen für "<" daher hab ich diese gegen ">=" oder "!>" getauscht - gibt es da eine elegantere Lösung...?
JavaScript Code wird normaler Weise in HTML Kommentare geschreiben dann sollte dies auch dein Validator schlucken und du kannst wieder normal > und < verwenden
Sorry, wusste nicht wo ich das Thema am besten posten sollte (habe ich einen dedizierten JS-Bereich übersehen...?)
War auch blöd formuliert: das Programm startet nicht,oder es kommen keine Eingabefenster. Sobald ich den Berechnungsteil mittels
/*
*/
ausblende, läuft es zumindest. Muss also ein Fehler in der Schleifenbedingung sein. Habe ich das korrekt verschachtelt, und stimmt die Syntax, mit den runden und geschweiften Klammern?
@nrg: Wie oben geschrieben, sollte eigentlich "<" sein, leider mag das der HTML-Validator nicht - mit !> gibt es keine Probleme, warum auch immer...
@XHelp: Jede Zeile, in der das "<" stand, gab aufgrund dessen einen Fehler aus. Als Lösungsvorschlag erhält man, das mit "<" zu ersetzen, was aber irgendwie keinen sinn ergibt...? Was das Problem mit dem "<" ist, täte mich auch ineressieren, vor allem da ">" ja kein problem darstellt...
@ARadauer: Ich habe mich da nach dem gerichtet, was ich so im Netz zum Thema Schleifen gefunden habe...also mit den {} Klammern... :bahnhof:
Das sieht nach einem Syntaxfehler aus. Entweder die ganze HTML hier packen oder selber gucken wo das Problem ist. Binäre Suche/Auskommentieren könnte da auch helfen.
@XHelp: Jede Zeile, in der das "<" stand, gab aufgrund dessen einen Fehler aus. Als Lösungsvorschlag erhält man, das mit "<" zu ersetzen, was aber irgendwie keinen sinn ergibt...? Was das Problem mit dem "<" ist, täte mich auch ineressieren, vor allem da ">" ja kein problem darstellt...
Weil das Validator anscheinend das nicht als JS-Code angesehen hat. Es könnte auch am Programm liegen, aber höhstwahrscheinlich ist der fehler bei dir bzw. bei dem was du da gemacht hast.
...nein, die Frage ist nach wie vor, wo im Berchnungsablauf der Fehler liegt. Das Programm lässt sich leider nicht starten, bzw. kommen nicht die Eingabefenster für die einzelnen Werte.
Ich vermute den Fehler hinter den Bezeichnungen (also fahrzeugGewicht usw.) in der Berechnung, da ich ja bei die Eingabe wegen JavaScript parsen muss...vielleict lässt sich das in den Bedingungen mit "parseInt(fahrzeugGewicht)" umgehen...?
...wie ich schon im Titel schrieb, sollte das eigentlich eine verschachtelte if-Anweisung sein. Dass sie nicht korrekt sein kann, ist offensichtlich, da ich nicht so firm damit bin, habe ich um Hilfe gebeten.
Ich weiss nicht, ob es zwangsläufig immer nach
if
else if
else if
aufgebaut sein muss, denn das wären ja 3 gleichrangige Anweisungen (auch nacheinander abgearbeitet), ich bin halt nicht sicher, ob ich eine Verschachtelung auch so aufbauen muss/kann..
...bis auf den Inhalt der ersten Bedingung habe ich es doch so, oder sollte da der Fehler liegen? also statt (anzahl>=0) sollte doch (anzahl < 1) das gleiche ergeben...?
@ARadauer: Wie ich schon schrieb, würde ich nicht fragen, falls mir nach der Lektüre von Büchern und Beschreibungen mein Fehler klar geworden wäre. Sorry.
Leider hilft mir auch dein Tip nichtviel weiter. Das das mit ticketPreis=0 Müll ist, mag sein, aber ich möchte halt, dass wenn die erste Bedingung nicht erfüllt ist, er den Wert ticketPreis=0 setzt und dann in die entsprechende (verschachtelte) if-Anweisung geht.
Nein, das was du hast ist falsch und da liegt der Unterschied.
Eine Zahl, die größer gleich 0 ist, ist nicht das gleiche wie eine Zahl, die kleiner als 1 ist :bahnhof:
Hier mal der Ausgangsalgorithmus. Ich möchte ja auf < 1 prüfen, und nicht auf >0... Ziemlich sicher habe ich in der Abarbeitung einen Denkfehler, aber ich will den Ablauf deswegen nicht gleich auf den Kopf stellen...