sehr verzweifelt bin, bitte helfen

  • ich verzweifel noch ich such jetzt schon seit stunden den fehler und find ihn nicht , das programm sollte wenn man statt einem int einen andren datentyp eingibt ein ? ausgeben, und wenn der int <4 oder>2 ist ein falsche ausgabe eingeben,
    komischerweise gibt es aber wenn man ein a eingibt beides aus: ? und falsche ausgabe,
    hier der link zum code http://members.chello.at/chiara.wien
    wär über schnelle hilfe sehr dankbar

  • Hallo!


    Ich denke, der Fehler liegt bei Deiner Klammersetzung! Das "Falsche Eingabe" wird durch das 2. println("FALSCHE EINGABE"); in der vorletzten Zeile ausgegeben. Das liegt daran, dass sich diese Zeile nicht in dem Else-Zweig befindet!!


    Dieser Else-Zweig besteht also nur aus dem Try-Block, indem Du die Seitenlängen einließt, dieser wird also bei einer falschen eingabe nicht ausgeführt, wodurch die Initialwerte in den Variablen stehen, die dann natürlich die Ausgabe "Falsche Eingabe" produzieren!!


    Noch eine Anmerkung zum Stil!


    Die Fehlersuche stellt sich etwas schwierig, wenn man die Blöcke so schreibt.
    Man kann leicht solche Fehler verhindern, in dem man Klammern setzt, egal ob nur eine oder mehrere Anweisungen in diesem Block stehen:


    Hier habe ich den Fehler schon ausgebessert! Mann erkennt gleich auf den ersten Blick, die Strucktur des Programmes, und Fehler können sich auch nicht so leicht einschleichen!
    Es wäre auch vorteilhaft, die Seitenlängen kompakt in ein Feld zusammen zu fassen, und die abfrage der gültigkeit der Eingabe über eine Schleife zu Bewerkstelligen!! Würde nur noch eine zusätzliche boolesche Variable kosten, die anzeigt, ob ein ungültiger Wert vorliegt. Diese Variable wäre auch gleich Voraussetzung für meine nächste Idee! Die ausgaben sind so dezentral, die gleiche Ausgabe kommt mehrmals vor. Wie wäre es, wenn man in einer einzigen Prozedur durch auswertung der Booleschen Variablen feststellt, ob es ein Fehler aufgetretten ist oder nicht und dann dort entscheidet ob man nun en "?", "FALSCHE EINGABE" oder das Ergebnis ausgibt!!


    Hätte einige vorteile! Überlegs Dir mal! Wenn dass Programm größer wird, und Du durcheinander ausgaben hast und auf Fehlersuche gehst, hast Du mit Deinem Stil sicher ein paar Probleme mehr!!!


    mfg, Seg

    Der klügere gibt nach! Dieser Spruch begründet die Herrschaft der Dummheit!!

  • es is auch immer gscheit klammernblöcke zu machen.. also nicht einfach

    Code
    1. if(blabla)blabla;


    sonderen eher

    Code
    1. if(blabla)
    2. {
    3. blabla
    4. }


    zumindest hat man mehr übersicht und kommt schneller auf solche probleme drauf...

    Give a man a fish and he'll eat it for the day.
    Teach him how to fish and he will eat for the rest of his life...

  • :thumb: vielen dank :D :D


    ich werd versuchn ab jetzt klammern zu setzen.
    ich hab sie in dem prog weggelassen, weil ich mich nicht ganz auskenn was man unklammert, weiss nur dass nach if () wenn mehrere anweisungen kommen {} stehen müssen und wenn nur 1 anweisung kommt {} stehen dürfen..
    eins hab ich vergessen die angabe muss ja vollständig eingelesen werden also man sollte nicht nach dem ersten zeichen schon enter drücken dürfen, zb.: nach dem falschen e,
    das is aber noch möglich, wie könnt ich das ändern?

  • Otto: Apes don't read philosophy. - Wanda: Yes they do, Otto, they just don't understand
    Beleidigungen sind Argumente jener, die über keine Argumente verfügen.
    «Signanz braucht keine Worte.» | «Signanz gibts nur im Traum.»


    Das neue MTB-Projekt (PO, Wiki, Mitschriften, Ausarbeitungen, Folien, ...) ist online
    http://mtb-projekt.at

  • wie lautet die fehlermeldung?
    oder funktionierts eh schon mit wing's proggie?
    zufaul zum kompilieren *g*

    Give a man a fish and he'll eat it for the day.
    Teach him how to fish and he will eat for the rest of his life...

  • danke schön daran lags :thumb: :))
    aber langsam hauts mich auf :mad:
    beim einlesen von 4 dreiecken müsst ich wenn ich weiter mit schleifen arbeite ca 40 schleifen oder so machen um alle möglichen fälle abzudecken, bis jetzt gings nur mit schleifen zu arbeiten aber ich glaub jetzt brauch ich eine neue methode..


    weiss vielleicht wer wie ich jetzt am besten weitermachen könnte ?


    :confused:
    aktueller code http://members.chello.at/chiara.wien

  • Wie meinst du das??


    Könntest ja vielleicht mal die Spez. uploaden, damit man sich ein Bild machen kann von deiner Aufgabe.


    Grüsse, AntiBit

    Hätten uns Spiele wie Pac-Man in unserer Jugend beeinflusst, würden wir heute durch dunkle Räume irren, elektronische Musik hören und Pillen fressen.

  • i glaub mit schleifen meinst du die bedingungen, oder? (if, else)
    das kannst du ganz einfach mit case anweisungen machen...
    beispiel:
    mit if:


    mit case:


    ich hoff das war eh was du wissen wolltest und ich hab ned zuviel scheiß geschrieben der eh niemanden interessiert... ;)

    Give a man a fish and he'll eat it for the day.
    Teach him how to fish and he will eat for the rest of his life...

  • nein das hab ich nicht gemeint
    ich hab gemeint dass ich mein ganzes programm bis jetzt mit ifs und elsen erstellt hab, weil ich mich mit was andrem ned auskenn..
    nur komm ich jetzt mit den schleifen nimma weiter und brauch etwas anderes...
    es geht um das beispiel dreieck.java
    und mit den progs von sourceforge kann i leida nix anfangen :( :(

  • Hab das Programm letztes Semester auch bekommen, und habe mich das selbe gefragt.


    Habe dann ein Verfahren entwickelt, das eigentlich sehr gut gefunkt hat, aber da ich etwas vergessen habe :coolgrim:, nicht ganz korrekt war.


    Folgendes Prinzip:
    Du berechnest die Flächen der Dreiecke und summierst diese, also hast Du die Fläche des möglichen Quadrats bzw. der Raute
    daraus berechnet man sich die Seitenlänge von Quadrat bzw. Seitenlängen der Raute. Nun sucht man die Aussenseiten des Quadrates bzw. Raute unter den Seitenlängen der Dreiecke, sind diese vorhanden müssen sich die restlichen Seitenlängen gegenseitig aufheben, da Dreieck an Dreieck liegen muss.
    Heben sich die restlichen Dreiecke alle auf, so ist es möglich ein Quadrat bzw. eine Raute aus den gegebenen Dreiecken aufzubauen.


    Folgende Punkte sollten noch beachtet werden:
    Raute entsteht nur aus 4 Dreiecken.(mein Fehler)
    Seitenlängen, sei es für aussenseiten oder für innere Seiten, bestehen öfters aus zwei Dreiecksseiten!
    Für die Berechnung der Rautenseitenfläche benötigt man noch einen Winkel zwischen zwei Seiten der Raute. Dieser Winkel ist entweder ein Winkel aus einem Dreieck oder die Summer zweier Winkel aus zwei verschiedenen Dreiecken!


    mfg, René

    Der klügere gibt nach! Dieser Spruch begründet die Herrschaft der Dummheit!!

  • Nun sucht man die Aussenseiten des Quadrates bzw. Raute unter den Seitenlängen der Dreiecke


    und wie macht man das, wieder mit if schleifen?oder gibst da eine methode ?


    Seitenlängen, sei es für aussenseiten oder für innere Seiten, bestehen öfters aus zwei Dreiecksseiten!


    und wie findet man das heraus?

  • jeder Algorithmus besteht irgendwie aus if-Abfragen, die wird man nicht los! Schleifen und Abfragen sind die Basis für ein Programm. Diese einfachen Strukturen gibt es in jeder Programmiersprache! Ich verstehe Deine Frage nicht ganz, wenn Du keine Abfragen machst, dann wird Dein Programm immer wieder das selbe machen, ohne die Daten zu analysieren!!


    Du hast Dir die Aussenseite des Quadrates ausgerechnet und vergleichst diese Länge mit den Seiten vom Dreieck! Sind sie gleich lang (unter berücksichtigung der Genauigkeit) hast Du eine Seite gefunden!!


    Finden von zusammengehörige Seiten:


    Bei zusammen gesetzten Aussenseiten von einem Quadrat bzw. Rhombus geht man so vor:
    Gegeben ist die seitenlänge a
    Nun sucht man unter den Dreiecken alle Seitenlängen, die gleich lang der geg. Seitenlänge sind.


    hat man weniger als die vier Aussenseiten gefunden, geht man dazu über Seiten von zwei verschiedenen Dreiecken zu kombinieren und diese mit der länge der geg. Seitenlänge zu vergleichen!


    Bei vergleichen von inneren Seitenlängen muss man etwas aufpassen, da man hier Prioritäten setzen muss. Es besteht die möglichkeit, dass man zwei gleiche Seiten eleminiert, diese jedoch zusammengesetz für eine dritte große Seitelänge zur Elimination gebraucht werden, nicht auf das richtige Ergebnis kommt. Deshalb sollte man mehrer Möglichkeiten per Hand durchgehen!!


    Zur Umsetzung bieten sich Felder an, so habe ich es gelöst, da ich mich damals noch nicht so ganz in OOP auskannte


    mfg,Seg

    Der klügere gibt nach! Dieser Spruch begründet die Herrschaft der Dummheit!!

  • Du solltest Dich ein wenig in das Java2 Buch einlesen oder eine Toturial durchmachen, damit die Grundbegriffe, wie Schleifen, Abfragen, Methoden, Klassen, Objekte oder Felder sitzen


    Gut gemeinter Rat, den ohne Programmiererkenntnisse ist es schwerr!!

    Der klügere gibt nach! Dieser Spruch begründet die Herrschaft der Dummheit!!

  • OOP heisst Objekt-Orientiertes Programmieren. Das heisst: Mehrere Klassen verwenden und Objekte durch Konstruktoren erzeugen.


    Mit Felder meinst du schätzomativ Arrays, oder? Wie mein Vorgänger schon gesagt hat, du solltest dir dringend ein (für Anfänger gut geeignetes) Buch besorgen, denn ohne dem ist das für nen Neuling fast unmachbar. Und die EPROG-Folien bzw. deren supertolles """Skriptum""" sind auch nur begrenzt bis gar nicht zu gebrauchen.


    Mit einem guten Buch sollte dann einiges klarer werden :D

    Hätten uns Spiele wie Pac-Man in unserer Jugend beeinflusst, würden wir heute durch dunkle Räume irren, elektronische Musik hören und Pillen fressen.