ProgrammiererMo Geschrieben 30. August 2010 Teilen Geschrieben 30. August 2010 (bearbeitet) Ich bin seit einem Tag ganz neu im BlueJ bzw. Java Geschäft. Im moment versuche ich ein Konto zu programmieren welches erstmal nur abheben bzw. einzahlen und informationen ausgeben soll. Dabei möchte ich Sicherheitsabfragen wie pin oder augen- und haarfarbe einbringen. Allerdings kommt in letzter Zeit immer wieder folgende Probleme auf Problem auf: public class Konto { private int pin; private String inhaber private Double kontostand public Konto(int Passpin, String pInhaber){ kontostand = 0.00 pin = Passpin; pInhaber = inhaber; } public void kriegeGeld(int Passpin){ if (pin == Passpin){ public GeldDazu(Double betrag){ <--- illegal start of expression kontostand += betrag; }}} } Dies ist eine gekürzte Fassung meines Programms. Ich habe hierbei einmal das Problem das an der Seite steht und das Problem das hinterher wenn ich das Programm ausführe (Das Problem trat auf bevor ich den Passpin einbaute, den hab ich nachträglich gemacht obwohl nicht alles funktionierte :-)) und ein neues Konto erstelle und einen beliebigen Namen z.B. Peter für den String "pInhaber" eingebe wirft das program das problem: Error: cannot find symbol - variable peter Ich erbitte um Hilfe Vielen Dank Bearbeitet 30. August 2010 von flashpixx Code-Tags Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 30. August 2010 Teilen Geschrieben 30. August 2010 Bitte verwende Code-Tags ! Ich habe sie nachträglich eingefügt. Das "public" ist ein Schlüsselwort, das nicht innerhalb des Methodenrumpfes verwendet werden darf. Der Bezug zu Deiner Variablen Peter geht aus dem Quellcode nicht hervor. Ein String bzw. dessen Inhalt ist nicht als Variablennamen anzusprechen. Poste den ganzen Code bzw die dazu relevanten Auszüge, damit man weiter helfen kann Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
redictable Geschrieben 30. August 2010 Teilen Geschrieben 30. August 2010 Stimme flashpixx zu, des weiteren ist mir die Zeile pInhaber = inhaber; aufgefallen. Ich glaube hier wolltest du folgendes erreichen inhaber = pInhaber; Grüße Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ProgrammiererMo Geschrieben 31. August 2010 Autor Teilen Geschrieben 31. August 2010 Mein Problem is ja grade das ich keine Variable Peter habe sondern dies der Inhalt für meinen inhaber String ist ich habe es mal anders ausprobiert, und zwar funktioniert es einen Name in anführungszeichen in das feld zu setzen z.B. "Peter" hinterher fiel mir auch auf dass das bei jedem Stringfeld so ist. Kann man das irgendwie machen, dass man keine anführungszeichen setzen muss damit der string das versteht und nicht als variable sieht? Und noch ein paar fragen habe ich: wie kann ich einen Codepart wiederholen lassen bis etwas geschieht könntet ihr mir dazu und zum springen zu bestimmten punkten im code mal nen code reinstellen?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ProgrammiererMo Geschrieben 31. August 2010 Autor Teilen Geschrieben 31. August 2010 noch eine dritte frage: wenn ich eine abfrage mit mehreren Kriterien mache mit if wie kann ich dann je nach dem welche der if's nicht zutrifft unterschiedliche else's einfügen. und überhaupt warum kommt bei diesem code kein outprint wenn ein if nicht zutrifft: public void kriegeGeld(int Kontonummer, int Passpin, Double betrag){ if (pin == Passpin) if (nummer == Kontonummer){ kontostand += betrag; } else { System.out.println("Sie haben nicht die Rechte auf dieses Konto zuzugreifen!"); }} Natürlich sind die nötigen variablen richtig gesetzt und jegliche eingaben dazu werden zuvor getätigt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 31. August 2010 Teilen Geschrieben 31. August 2010 Kann man das irgendwie machen, dass man keine anführungszeichen setzen muss damit der string das versteht und nicht als variable sieht? Nein, ein String wird immer in entsprechende Anführungszeichen gesetzt, damit er passend vom Parser und Compiler verarbeitet werden kann. wie kann ich einen Codepart wiederholen lassen bis etwas geschieht könntet ihr mir dazu und zum springen zu bestimmten punkten im code mal nen code reinstellen?? Nennt sich "Schleifen". Ich empfehle Dir ganz dringend für diese wirklichen Basisstrukturen entsprechende Literatur durchzulesen. Das was Du hier möchtest findest Du wirklich in jedem Lehrbuch über Programmierung. Für Java z.b. Galileo Computing :: Java ist auch eine Insel (8. Auflage) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 31. August 2010 Teilen Geschrieben 31. August 2010 wenn ich eine abfrage mit mehreren Kriterien mache mit if wie kann ich dann je nach dem welche der if's nicht zutrifft unterschiedliche else's einfügen. Indem Du die If-then-else Bedingungen passend schachtelst oder je nach Möglichkeit eine switch-case Struktur verwendest. und überhaupt warum kommt bei diesem code kein outprint wenn ein if nicht zutrifft: Das ist auch korrekt, ein else wird immer an das nächst-liegende if gebunden, d.h. in Deinem Fall an das innerste (nummer == Kontonummer). Du musst dem Compiler schon mitteilen, wo Du was machen möchtest, dafür kann z.B. Klammern passend setzen, die Anweisungsblöcke gegen andere abgrenzen. Aber bitte auch hierzu einschlägige Literatur lesen. Wir können hier sicherlich keinen kompletten Kurs "Grundlagen in Javaprogrammierung" abhalten Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
redictable Geschrieben 2. September 2010 Teilen Geschrieben 2. September 2010 noch eine dritte frage: wenn ich eine abfrage mit mehreren Kriterien mache mit if wie kann ich dann je nach dem welche der if's nicht zutrifft unterschiedliche else's einfügen. und überhaupt warum kommt bei diesem code kein outprint wenn ein if nicht zutrifft: public void kriegeGeld(int Kontonummer, int Passpin, Double betrag){ if (pin == Passpin) if (nummer == Kontonummer){ kontostand += betrag; } else { System.out.println("Sie haben nicht die Rechte auf dieses Konto zuzugreifen!"); } } Natürlich sind die nötigen variablen richtig gesetzt und jegliche eingaben dazu werden zuvor getätigt. Das ließe sich wie folgt umgehen: public void kriegeGeld(int Kontonummer, int Passpin, Double betrag){ if (pin == Passpin && nummer == Kontonummer){ kontostand += betrag; } else { System.out.println("Sie haben nicht die Rechte auf dieses Konto zuzugreifen!"); } } Das "&&" steht für ein logischen UND d.h. der If-Block wird nur ausgeführt, wenn BEIDE bedingungen zutreffen. Grüße Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 2. September 2010 Teilen Geschrieben 2. September 2010 @redictable: Deine Lösung ist aber dann insoweit nicht korrekt, da die Fehlermeldung nur aussagt, dass der Pin falsch ist. Wenn der Pin korrekt, aber die Kontonummern nicht korrekt sind, würde die Meldung kommen, dass man keinen Zugriff auf das Konto hat. Deshalb wären zwei Ifs mit entsprechenden Else-Zeigen sinnvoller, wobei man auch keine Nachricht schreiben, sondern eine Exception werfen würde, die man in diesem Fall sogar selbst definieren kann, so dass man gezielt in der Anwendungsschicht passend reagiert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ProgrammiererMo Geschrieben 2. September 2010 Autor Teilen Geschrieben 2. September 2010 Ich habs jetzt verstanden, mir wurde es erklärt ich mach das jetzt mit else if und dann kann ich auch einzelbedingungen stellen Danke nochmal Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.