Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (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 von flashpixx
Code-Tags
Geschrieben

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

Geschrieben

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??

Geschrieben

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.

Geschrieben
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)

Geschrieben

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

Geschrieben
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

Geschrieben

@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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...