erstes kleines Programm

Thomas1981

Mitglied
Hallo liebes Forum !

Ich quäle mich nun schon 2 Tage mit meinem Programm herum :)

Bin in Java totaler Anfänger. Hab vom Buch Java ist eine Insel bereits ca. 300 Seiten studiert.
Jetzt versuch ich mich nebenbei um ein paar Praxisbeispiele in Eclipse.

Jetzt hab ich ein kleines Programm geschrieben, welche mir das Geburtsjahr ausrechnen soll.
Zuerst kommt eine Abfrage in der Console die besagt, dass man sein Alter in Jahren eingeben soll. Dann übergebe ich den eingegebenen Wert in eine Methode namens "möglicheFalscheingabe", welche prüfen soll ob die Eingabe <= 0 ist oder >120 ist. Denn diese Werte dürfen ja nicht sein. Mann kann nicht jünger als 1 Jahr sein oder eben nicht älter als 120 Jahre sein. Zumindestens nehmen wir das mal an. Wenn nun jemand z.B.: -2 eingibt, dann soll eine Meldung kommen, dass man nicht jünger als 1 Jahr sein kann. Wenn jemand z.B.: 121 eingibt, kommt eine Meldung dass man nicht älter als 120 Jahre sein kann.

Soweit funktioniert das auch nur wenn diese beiden if Anweisungen abgearbeitet sind und diese Zutreffen, dann soll das Programm wieder um eine erneute Eingabe fragen.

Das bekomm ich nicht hin. Kann mir da bitte jemand weiterhelfen welchen Befehl ich da brauch ? Google und das Buch bringen mich schon zum Verzweifeln :)

Danke ! Danke ! Danke !
Lg Tom

hier der Programmcode welchen ich bis jetzt erstellt habe:
Java:
import java.util.Scanner;

public class geburtsjahrAusrechnen {

    public static void main(String[] args) {
        eingabe();
       
    }

    public static void eingabe(){
        Scanner s = new Scanner(System.in);
        System.out.print("Gib bitte dein Alter in Jahren ein: ");
        int alter = s.nextInt();
        möglicheFalscheingabe(alter);
       
        int erg = (2015-alter);
        System.out.println("Dein Geburtsjahr ist: " + erg);
       
    }
   
    public static void möglicheFalscheingabe(int alter){
        int c = alter;
       
            if (c<=0)
            {           
                System.out.println("Du kannst nicht jünger als 1 Jahr sein!! ");
            }
            if (c>120)
            {
                System.out.println("Du kannst nicht älter als 120 Jahr sein!! ");   
            }
           
    }
           
}
 

Sin137

Mitglied
Soweit ich es richtig verstanden habe hier die Lösung:


Java:
    import java.util.Scanner;
   
   
public class geburtstagsscanner {

        public static void main(String[] args) {
            eingabe();
          
        }

        public static void eingabe(){
            Scanner s = new Scanner(System.in);
            System.out.print("Gib bitte dein Alter in Jahren ein: ");
            int alter = s.nextInt();
            möglicheFalscheingabe(alter);
          
            int erg = (2015-alter);
            System.out.println("Dein Geburtsjahr ist: " + erg);
           
            System.out.println("Das ist die nächste Abfrage: ");
            int wert = s.nextInt();
          
        }
      
        public static void möglicheFalscheingabe(int alter){
            int c = alter;
          
                if (c<=0)
                {         
                    System.out.println("Du kannst nicht jünger als 1 Jahr sein!! ");
                    System.exit(0);
                }
                if (c>120)
                {
                    System.out.println("Du kannst nicht älter als 120 Jahr sein!! "); 
                    System.exit(0);
                }
              
        }
              
   
}
 

Sin137

Mitglied
Ist auch oft bei mir so =)
Wenn man ein Befehl nicht kennt/weiß das er existiert,
kann man auch nicht drauf kommen.

LG

Sin

PS was du in den If-Abfragen noch machen kannst:
Das Alter muss du nicht extra in einer Variablen speichern.
Du kannst auch gleich sagen:

if(alter<=0)

so spart man sich variabeln und wenn die Programme größer werden
auch Rechenleistung.
 

Joose

Top Contributor
Soweit funktioniert das auch nur wenn diese beiden if Anweisungen abgearbeitet sind und diese Zutreffen, dann soll das Programm wieder um eine erneute Eingabe fragen.

Soweit ich deine Fehlerbeschreibung verstanden habe willst du bei der Eingabe eines falschen Alters den User erneut um die Eingabe eines Alters bitten?
Oder willst du wirklich das Programm beenden?

Soweit ich es richtig verstanden habe hier die Lösung:
Java:
System.exit(0);

Mit diesem Befehl von Sin137, beendest du einfach dein Programm fragst aber nicht erneut nach dem Alter. Habe ich deine Fehlerbeschreibung einfach falsch verstanden?


Anmerkung zum Code:
Klassennamen werden in UpperCamelCase geschrieben
Vermeide Umlaute -> egal ob bei Klassen-, Methodennamen oder Attributen.
In der Methode "möglicheFalscheingabe" könntest du die beiden if-Bedingungen zu einem if-elseif verbinden. Grund: wenn das Alter < 1 ist dann kann es sowieso nie > 120 sein. Daher wird die 2.if-Abfrage unnötiger Weise ausgeführt.
 

Sin137

Mitglied
Soweit funktioniert das auch nur wenn diese beiden if Anweisungen abgearbeitet sind und diese Zutreffen, dann soll das Programm wieder um eine erneute Eingabe fragen.

darin steht wenn die if-Anweisungen abgearbeitet sind und diese Zutreffen.
Daher der Befehl System.exit(0);
So beendet er wie du schon gesagt hast das Programm wie er auch will.

Die if-Abfragen würde ich so lassen, in dem Fall, dass er sein Programm erweitern will und auf grund dessen mehr Abfragen bennötigt, wird es schnell unübersichtlich.
Bei einer aufgeteilten If-Abfrage kann man im nachhinein besser erkennen was die Abfrage genau macht.
Bei einem einfache else muss man sich erst in den Codeteil reinarbeiten.
 

Thomas1981

Mitglied
Hallo Joose,

ja du hast recht mit dem System.exit(0); beende ich das Programm.
Diesen Befehl hab ich vorerst einmal gesucht :) und auch nicht gekannt (Erfolgserlebnis pur :) )

eine erneute Abfrage ruf ich ja dann mit

Java:
 System.out.println("Das ist die nächste Abfrage: ");
            int wert = s.nextInt();

auf. Dann kann ich entscheiden was ich weiterhin machen will.

Wie würde das Programm aussehen, wenn er bei einer Eingabe von z.B.: -2 eine Fehlermeldung ( z.B.: du kannst ja nicht jünger als 1 Jahr sein) aufruft. Dann einfach alle Zeilen löscht und wieder eine neue Abfrage startet , also nicht das Programm beendet ?

Java ist echt interessant.. Im Moment raucht mir der Kopf :)

Danke für die Info wegen Umlauten und einer if-else if Methode. Werde ich als nächstes versuchen.

Danke !!
Lg Tom
 

Sin137

Mitglied
Das ist zwar noch nicht OO aber ich habe mal das Programm in deinem Stiel geschrieben, dammit du nicht durcheinander kommst =).

Hier die Lösung falls du solang das Alter abfragen willlst, bis eine anständige Aussage kommt.

Java:
    import java.util.Scanner;
   
   
public class Geburtstagsscanner {
   
        static Scanner s;
        static int alter;
        static int erg;

        public static void main(String[] args) {
  
            s = new Scanner(System.in);
            abfrageGeburtsjahr();
            erg = (2015-alter);
            System.out.println("Dein Geburtsjahr ist: " + erg);
        }

        public static void abfrageGeburtsjahr(){
               System.out.print("Gib bitte dein Alter in Jahren ein: ");
                int alter = s.nextInt();
                möglicheFalscheingabe(alter);
        }
       
        public static void nächsteAbfrage(){
            System.out.println("Das ist die nächste Abfrage: ");
            int wert = s.nextInt();
        }
      
        public static void möglicheFalscheingabe(int alter){
            int c = alter;
          
                if (c<=0)
                {         
                    System.out.println("Du kannst nicht jünger als 1 Jahr sein!! ");
                    abfrageGeburtsjahr();
                }
                if (c>120)
                {
                    System.out.println("Du kannst nicht älter als 120 Jahr sein!! "); 
                    abfrageGeburtsjahr();
                }
              
        }
              
   
}
 

Joose

Top Contributor
ja du hast recht mit dem System.exit(0); beende ich das Programm.
Diesen Befehl hab ich vorerst einmal gesucht :) und auch nicht gekannt (Erfolgserlebnis pur :) )

eine erneute Abfrage ruf ich ja dann mit

Java:
 System.out.println("Das ist die nächste Abfrage: ");
            int wert = s.nextInt();

Gut dann habe ich dich falsch verstanden.
Dachte du wolltest bei einer Falsch Eingabe vom Alter, eben das Alter nochmal abfragen (-> erneute Abfrage).
Dein Code wäre ja die nächste Abfrage ;)

Wie würde das Programm aussehen, wenn er bei einer Eingabe von z.B.: -2 eine Fehlermeldung ( z.B.: du kannst ja nicht jünger als 1 Jahr sein) aufruft. Dann einfach alle Zeilen löscht und wieder eine neue Abfrage startet , also nicht das Programm beendet ?

Sin137 hat dir gerade eine Möglichkeit gezeigt. Wobei es keine saubere Lösung ist.
Einerseits kann ich das Programm nie beenden (z.B.: wenn der User "ende" eingibt wäre es schön wenn es sich beendet und nicht ewig nach dem alter fragt).
Wenn du bei diesem Program theoretisch sehr sehr (sehr, sehr, ....) oft eine Falscheingabe machst fliegt dein Programm mit einer StackOverflowException ;)
Aber das sind alles Sachen auf die wirst du früher oder später selber noch stoßen.

Ein alternative Möglichkeit wäre mit Hilfe von Schleifen.
 

Sin137

Mitglied
Da hast du recht, dass es keine saubere Lösung ist.
Ich habe auch lediglich sein Code geändert. Ich hätte wie schon erwähnt mit Objekten gearbeitet.

Die Funktion zum beenden ist nützlich da hsat du recht, wurde aber nicht gefragt.
Da er ja neu im Thema ist, wollte ich ihm nicht alles vorweg nehmen.

Bis er auf eine StackOverflowException via manueller eingabe stößt dürfte doch ein bisschen Zeit vergehen. :D
 

dongle

Neues Mitglied
Hier auch noch eine Variante.

Java:
import java.util.Scanner;

class Rechnen{
    public static int marker=1, alter;
   
             public static void main(String[] args){
                        eingabe();
           
         }
             public static void eingabe(){
                 Scanner s = new Scanner(System.in);
                                              
                 while (marker==1) {
                     System.out.print("Gib bitte dein Alter in Jahren ein: ");
                     alter = s.nextInt();
                     möglicheFalscheingabe(alter);
                }
                          
               
                 int erg = (2015-alter);
                 System.out.println("Dein Geburtsjahr ist: " + erg);
               
             }

            public static void möglicheFalscheingabe(int alter){
                 int c = alter;
                                
                     if (c<=0)
                     {          
                         System.out.println("Du kannst nicht jünger als 1 Jahr sein!! ");
                         return;
                                           }
                     if (c>120)
                     {
                         System.out.println("Du kannst nicht älter als 120 Jahr sein!! ");
                         return;
                                             }
                     marker=0;
                    return;
                   
             }    
            
}
 

Khal Drogo

Bekanntes Mitglied
So, wenn jetzt hier schon alle fertigen Code posten, wie wär's mit:
Java:
// ...
do {
  System.out.println("Gib bitte dein Alter in Jahren ein: ");
  alter = s.nextInt();
} while(alter < 1 || alter > 120);
// ...
Java:
// ...
do {
  System.out.println("Gib bitte dein Alter in Jahren ein: ");
  alter = s.nextInt();
} while(inputInvalid(alter));
// ...
public static boolean inputInvalid(int input) {
  if(input < 1 || input > 120) {return true;}
  return false;
}
// ...
Die zweite Version entspricht mehr oder weniger der ersten, allerdings ist die Abfrage, ob die Eingabe gültig ist, ausgelagert.

Mit freundlichen Grüßen
Xelsarion

EDIT: Natürlich kann die do-while-Schleife auch durch eine normale while-Schleife ersetzt werden, dann muss allerdings sichergestellt werden, dass alter initialisiert wurde. Zudem ist die do-while-Schleife normalerweise vorzuziehen, sofern der Code auf jeden Fall mindestens einmal ausgeführt werden soll, was hier der Fall ist. Die while-Schleife ist der Standard, wenn vor dem Schleifendurchlauf Bedingungen erfüllt sein müssen.
 
Zuletzt bearbeitet:

Thomas1981

Mitglied
Oh, soviele verschiedene Möglichkeiten..
Da habt ihr mir ein bisschen einen Lernstoff aufgegeben :)

Ich werde das alles mal genau durchstudieren. Danke Leute für eure Hilfe!!

Beim "Geburtstagsscanner" von Sin137, kommt beim Ergebnis immer
"Dein Geburtsjahr ist: 2015" raus wenn ich es ablaufen lasse und ein Alter in der Konsole eingebe.
Muss erst durchschauen was es da hat.

Die Methode von dongle funktioniert schon mal, hab ich getestet.

Es gibt halt unterschiedliche Wege um zum Erfolg zu kommen.
Das macht richtig Spaß beim Programmieren.

@SiN: die oberen 3 static Befehle in der Klasse Geburtstagsscanner versteh ich noch nicht ganz.
Hoffentlich stolpere ich da in meinem Buch nochmal auf eine Lösung :)

Lg Tom
 

Sin137

Mitglied
Achja ich seh es grad :D du musst die Berechnung in die Methode packen =) damit er auch immer schön neu rechnet ^^

also das:
erg = (2015-alter);
 

Thomas1981

Mitglied
Ja, genau das wars!! THX jetzt funktioniert es.

Was mich noch interessieren würde, ab wann ist es sinnvoll Objektorientiert zu programmieren und welches Programm nutzt ihr dazu ? Ich hab da nur mal so aus Neugier reingeschaut, aber noch nicht mehr. Im Moment bin ich mit Eclipse schon am Rande eines Kopfplatzers :) aber für die Zukunft unbedingt ein Muß !

Lg Tom :)
 

Sin137

Mitglied
Also OOP ist eigentlich ein muss für Java. Das zeichnet es ja auch aus ;)
Gerade wenn du anfängst mit Grafischen-Oberflächen zu arbeiten, kommst du nicht mehr drum rum.

Eclipse ist sehr gut!
Das wurde auch am Anfang meines Studiums vorgeschlagen. Seidem nutze ich es.
 

Khal Drogo

Bekanntes Mitglied
Du brauchst grundsätzlich keine Entwicklungsumgebung, allerdings ist es meistens ganz praktisch. Allerdings hat Eclipse eine eigene Konsole, weshalb manche Sachen in Eclipse nicht so funktionieren, wie man es erwarten würde.

Mit freundlichen Grüßen
Xelsarion
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Erstes "kleines" Programm Java Basics - Anfänger-Themen 5
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
C Erstes kleines Problem - string in chat ? Java Basics - Anfänger-Themen 9
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
S Mein erstes eigenes Projekt - Aufbau und Strukturierung Java Basics - Anfänger-Themen 6
I Letztes, erstes Element vom Array Java Basics - Anfänger-Themen 9
X Array erstes und letztes Element tauschen Java Basics - Anfänger-Themen 2
J erstes Vorkommen eines Chars aus einem String entfernen Java Basics - Anfänger-Themen 3
J erstes Vorkommen eines chars entfernen Java Basics - Anfänger-Themen 1
O Erstes Programm: Matrizen Multiplikation Java Basics - Anfänger-Themen 10
H java erstes projekt Java Basics - Anfänger-Themen 502
M OOP Mein erstes Textadventure... Java Basics - Anfänger-Themen 3
D Auswahl und Ausgabe erstes Programm Java Basics - Anfänger-Themen 8
M Mein erstes Programm Java Basics - Anfänger-Themen 3
V Erste Schritte Erstes Project - Hilfe Java Basics - Anfänger-Themen 9
M Erste Schritte Erstes Programm mit Compiler öffnen Java Basics - Anfänger-Themen 4
M Mein erstes Java Programm Java Basics - Anfänger-Themen 5
J Erstes Applet läßt sich nicht anzeigen Java Basics - Anfänger-Themen 2
M Erstes Textrollenspiel funktioniert...nicht. Java Basics - Anfänger-Themen 2
L Erstes Projekt aus zwei Projekten Java Basics - Anfänger-Themen 1
T mein erstes Java projekt Java Basics - Anfänger-Themen 8
1 Mein erstes Programm, HELP!! Java Basics - Anfänger-Themen 2
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
M Erstes Prog. OS Abfrage Java Basics - Anfänger-Themen 9
E Mein erstes Java Projekt - Sauberer code? Java Basics - Anfänger-Themen 28
A Erstes Programm: Polynom-Klasse Java Basics - Anfänger-Themen 15
B Erstes Element eines Vectors erhalten Java Basics - Anfänger-Themen 5
D Mein erstes Programm flackert Java Basics - Anfänger-Themen 5
W Erste Schritte erstes Programm Java Basics - Anfänger-Themen 40
A Textdatei einlesen - erstes Zeichen falsch Java Basics - Anfänger-Themen 20
I Liste Remove erstes Element Java Basics - Anfänger-Themen 5
W Erstes eigens Programm - Klassen- und Schüler Verwaltungsprogramm Java Basics - Anfänger-Themen 5
M Erstes "sinnvolles" Programm Java Basics - Anfänger-Themen 11
A Erstes Programm - Problem beim Ausführen als jar Java Basics - Anfänger-Themen 3
B Methoden Mein erstes Programm - und gleich Probleme Java Basics - Anfänger-Themen 6
J Bald erstes Java Buch durchgearbeitet - Wie gehts nun weiter? Java Basics - Anfänger-Themen 6
R [CODECHECK] Erstes Programm Java Basics - Anfänger-Themen 6
T Erstes Zeichen aus String löschen Java Basics - Anfänger-Themen 8
J erstes Prog./Klasse - Konstruktur/Objekterstellung funktioniert nicht Java Basics - Anfänger-Themen 25
M Erstes Programm und Fehlermeldung Java Basics - Anfänger-Themen 5
B erstes Java-Applet Java Basics - Anfänger-Themen 7
M Erstes Zeichen in einem String in Großbuchstaben wandeln Java Basics - Anfänger-Themen 3
M Sammlung von Anfängerfragen für mein erstes Programm Java Basics - Anfänger-Themen 15
C Erstes Arraylist Element in for Schleife überspringen Java Basics - Anfänger-Themen 6
G Erstes Java-Programm Java Basics - Anfänger-Themen 10
E Erstes Programm - Problem mit Exception Java Basics - Anfänger-Themen 3
G Feststellen, ob erstes Zeichen eines Strings eine Ziffer ist Java Basics - Anfänger-Themen 11
M Serialisierung erstes Beispiel Java Basics - Anfänger-Themen 4
A erstes größeres Projekt Java Basics - Anfänger-Themen 14
P Mein erstes JAR-File Java Basics - Anfänger-Themen 8
G erstes Zeichen eines Strings herausfinden Java Basics - Anfänger-Themen 3
G erstes element einer haspmap Java Basics - Anfänger-Themen 5
G erstes Arbeiten mit Collections Java Basics - Anfänger-Themen 17
G erstes Arbeiten mit Packages Java Basics - Anfänger-Themen 2
T Erstes RPG: KeyAdapter Problem Java Basics - Anfänger-Themen 3
M erstes Zeichen ersetzen Java Basics - Anfänger-Themen 2
C Konstruktor wird nicht als erstes aufgerufen! Java Basics - Anfänger-Themen 11
L Suche Verbesserungsvorschläge für mein erstes Programm Java Basics - Anfänger-Themen 34
Bierhumpen mein erstes großes Programm. Was ändern? verbessern? Java Basics - Anfänger-Themen 12
O mit Regex erstes Zeichen überprüfen Java Basics - Anfänger-Themen 3
A Mein erstes Programm Java Basics - Anfänger-Themen 6
D JNDI-DataSource erstes mal benutzen Java Basics - Anfänger-Themen 4
T Erstes Programm Java Basics - Anfänger-Themen 7
B Erstes Programm :-/ Java Basics - Anfänger-Themen 3
M Erstes Element einer Enumeration? Java Basics - Anfänger-Themen 6
A Erstes Buch durchgelesen, wie weiter vorgehen? Java Basics - Anfänger-Themen 8
S Kleines Java-Projekt; Kassenprogramm Java Basics - Anfänger-Themen 7
Kotelettklopfer Kleines Testprogramm mit Interface und einer Usereingabe Java Basics - Anfänger-Themen 16
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
J Kleines Rechenprogramm Java Basics - Anfänger-Themen 13
G Erste Schritte Suche Java Programmierer für kleines Projekt Java Basics - Anfänger-Themen 1
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
B Input/Output Kleines Netzwerkproblem Java Basics - Anfänger-Themen 2
J OOP Kleines Schülerverwaltungsprogramm Java Basics - Anfänger-Themen 9
F Methoden Kleines Problem mit meinem Glücksrad... Java Basics - Anfänger-Themen 9
N ein kleines GUI mit einem hauch XML Java Basics - Anfänger-Themen 5
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
S Kleines Quiz Programm Java Basics - Anfänger-Themen 4
C Hilfe - Kleines Programm macht mir Schwierigkeiten Java Basics - Anfänger-Themen 2
A Kleines Abbruch-Problem mit Do-While-Schleife Java Basics - Anfänger-Themen 4
K Ein kleines Rätsel Java Basics - Anfänger-Themen 2
D kleines problem bei system.out.println schreibweise Java Basics - Anfänger-Themen 6
C Kleines Problem mit System.out.print Java Basics - Anfänger-Themen 1
A Best Practice Ideen für kleines Anfängerschulprojekt gesucht Java Basics - Anfänger-Themen 4
J kleines Karteikartenprogramm Java Basics - Anfänger-Themen 3
S Kleines Zeichen berechnen Java Basics - Anfänger-Themen 5
fLooojava kleines Projekt - Verwendung von Youtube Java Basics - Anfänger-Themen 22
E Array zu Liste - kleines Problem Java Basics - Anfänger-Themen 6
fLooojava Passwort generieren - kleines Programm Java Basics - Anfänger-Themen 15
H Kleines Prob Java Basics - Anfänger-Themen 5
J Vererbung Kleines Problem bei Vererbung! Java Basics - Anfänger-Themen 2
O Debug-Funktion mit Slick - Kleines Problem Java Basics - Anfänger-Themen 5
J Flaechen vergleichen/kleines Fehler? Java Basics - Anfänger-Themen 23
H Kleines Problem bei den Schleifen Java Basics - Anfänger-Themen 5
M Kleines Problem mit der Rekursion Java Basics - Anfänger-Themen 20
K Kleines Projekt Java Basics - Anfänger-Themen 2
T Kleines Game mit Kollision Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben