Warum wird if-Schleife nicht ausgeführt?

Kadezzo

Mitglied
Das was jetzt gebraucht wird (denke ich zumindest) sieht so aus:


Java:
    public void add()
    {
        if(Frucht1 == "Apfel") {
        if(meineAepfel.length > 0){
            meinKorb.apfelHinzufuegen();
            Scanner scanner1 = new Scanner (System.in);
            System.out.print("Wähle deine zweite Frucht: ");  
            Frucht2 = scanner1.next();
            Korb2();
        } else {
            System.out.println("Wähle eine andere erste Frucht. Es gibt keine Äpfel mehr!");
            Korb1();
        }
    }
}


    public void Korb1() {
        Scanner scanner = new Scanner (System.in);
        System.out.print("Wähle deine erste Frucht: ");  
        Frucht1 = scanner.next();     
        add();
       
}
Meine Frage lautet nun wieso Java nachdem ich Korb1 ausgeführt habe und scanner.next() die Variable "Apfel" zugewiesen habe, in add() dann nicht die if-Schleife ausführt.

Wenn das an Code nicht reicht, kann ich auch die ganze Klasse posten
 
Zuletzt bearbeitet von einem Moderator:

Chips199

Mitglied
Hallo,
du kannst Strings nicht mit == vergleichen sondern nur mit:
Code:
String str1 = "Apfel";
if(str1.equals("Apfel")) {
// tue etwas
}
Mfg Chips199
Ps: benutze demnächst bitte[ code=Java][ /code] für den Code.
 

Kadezzo

Mitglied
Oh man, danke erstmal. Das funktioniert jetzt auch, stehe nun aber vor einem weiteren Problem. Ich poste wieder erstmal den Code

Klasse Spielbrett
Code:
    public void add()
    {
        if(Frucht1.equals("Apfel")) {
        if(meineAepfel.length > 0){
            meinKorb.apfelHinzufuegen();
            Scanner scanner1 = new Scanner (System.in);
            System.out.print("Wähle deine zweite Frucht: "); 
            Frucht2 = scanner1.next(); // Get what the user types.
            Korb2();
        } else {
            System.out.println("Wähle eine andere erste Frucht. Es gibt keine Äpfel mehr!");
            Korb1();
        }
    }
}
    public void Korb1() {
        Scanner scanner = new Scanner (System.in);
        System.out.print("Wähle deine erste Frucht: "); 
        Frucht1 = scanner.next(); // Get what the user types.   
        add();
      
}

Und hier Klasse Korb

Code:
public class Korb{
    private Apfel[] meineAepfel;
    private Kirsche[] meineKirschen;
    private Birne[] meineBirnen;
    private Pflaume[] meinePflaumen;
    public int a = 0;
    public int k = 0;
    public int b = 0;
    public int p = 0;
   
    public void apfelHinzufuegen() {
        meineAepfel = new Apfel[a];
        for(a = 0; a<meineAepfel.length; a++){ 
            meineAepfel[a] = new Apfel(); 
        }
    }
    public void kirscheHinzufuegen() {
        meineKirschen = new Kirsche[k];
        for(k = 0; k<meineKirschen.length; k++){ 
            meineKirschen[k] = new Kirsche(); 
        }
    }
    public void birneHinzufuegen() {
        meineBirnen = new Birne[b];
        for(b = 0; b<meineBirnen.length; b++){ 
            meineBirnen[b] = new Birne(); 
        }
    }
    public void pflaumeHinzufuegen() {
        meinePflaumen = new Pflaume[p];
        for(p = 0; p<meinePflaumen.length; p++){ 
            meinePflaumen[p] = new Pflaume(); 
        }
    }
}


Nun die Frage: Wieso bekomme ich eine "ava.lang.NullPointerException" im Bezug auf "meinKorb.apfelHinzufuegen();"?
Bin wieder für jede Hilfe dankbar!
 

Kadezzo

Mitglied
Java:
import java.util.Scanner;
public class Spielbrett{
    public Apfel[] meineAepfel;
    private Kirsche[] meineKirschen;
    private Birne[] meineBirnen;
    private Pflaume[] meinePflaumen;
    private Würfel meinWuerfel;
    private Rabe meinRabe;
    private Obst meinObst;
    private Korb meinKorb;
    private int a = 10;
    private int k = 10;
    private int p = 10;
    private int b = 10;
    private String Frucht1;
    private String Frucht2;
    private String Apfel = "Apfel";
    public Spielbrett(Rabe pRabe) {
        meinRabe = pRabe;
        meinWuerfel = new Würfel();
        meineAepfel = new Apfel[a];
        meineKirschen = new Kirsche[k];
        meineBirnen = new Birne[b];
        meinePflaumen = new Pflaume[p];
        for(a = 0; a<meineAepfel.length; a++){
            meineAepfel[a] = new Apfel();
        }
        for( k = 0; k<meineKirschen.length; k++){
            meineKirschen[k] = new Kirsche();
        }
        for(b = 0; b<meineBirnen.length; b++){
            meineBirnen[b] = new Birne();
        }
        for(p = 0; p<meinePflaumen.length; p++){
            meinePflaumen[p] = new Pflaume();
        }
    }
    public Korb getKorb(){
        return meinKorb;
    }
    public Rabe getRabe(){
        return meinRabe;
    }
    public Würfel getWürfel(){
        return meinWuerfel;
    }
    public void würfeln(){
        meinWuerfel.würfeln();
        if(meineBirnen.length == 0 && meineKirschen.length == 0 && meineAepfel.length == 0 && meinePflaumen.length == 0) {
            System.out.println("Die Spieler haben das Spiel gewonnen");
        } else {
            if(meinRabe.puzzleteile < 9) {
                if(getWürfel().seite2 == 1/*Apfel*/) {
                    if(meineAepfel.length > 0) {
                        a = a - 1;
                        meineAepfel = new Apfel[a];
                        System.out.println("Apfel");
                    }
                    else {
                        System.out.println("Bitte erneut würfeln, es gibt keine Äpfel mehr!");
                    }
                }
                if(getWürfel().seite2 == 0/*Kirsche*/) {
                    if(meineKirschen.length > 0) {
                        k = k - 1;
                        meineKirschen = new Kirsche[k];
                        System.out.println("Kirsche");
                    }
                    else {
                        System.out.println("Bitte erneut würfeln, es gibt keine Kirschen mehr!");
                    }
                }
                if(getWürfel().seite2 == 2/*Pflaume*/) {
                    if(meinePflaumen.length > 0) {
                        p = p - 1;
                        meinePflaumen = new Pflaume[p];
                        System.out.println("Pflaume");
                    }
                    else {
                        System.out.println("Bitte erneut würfeln, es gibt keine Pflaumen mehr!");
                    }
                }
                if(getWürfel().seite2 == 3/*Birne*/) {
                    if(meineBirnen.length > 0) {
                        b = b - 1;
                        meineBirnen = new Birne[b];
                        System.out.println("Birne");
                    }
                    else {
                        System.out.println("Bitte erneut würfeln, es gibt keine Birnen mehr!");
                    }
                }
                if(getWürfel().seite2 == 4/*Korb*/) {
                    Korb1();
                }
            } else {
                System.out.println("Der Rabe hat gewonnen!");
            }
        }
    }
    public void add()
    {
        if(Frucht1.equals("Apfel")) {
        if(meineAepfel.length > 0){
            meinKorb.apfelHinzufuegen();
            Scanner scanner1 = new Scanner (System.in);
            System.out.print("Wähle deine zweite Frucht: ");
            Frucht2 = scanner1.next();
            Korb2();
        } else {
            System.out.println("Wähle eine andere erste Frucht. Es gibt keine Äpfel mehr!");
            Korb1();
        }
    }
}
    public void Korb1() {
        Scanner scanner = new Scanner (System.in);
        System.out.print("Wähle deine erste Frucht: ");
        Frucht1 = scanner.next(); // Get what the user types. 
        add();
    
}
    public void Korb2() {
        if(Frucht2.equals("Apfel")) {
        if(meineAepfel.length > 0){
            meinKorb.apfelHinzufuegen();
        } else {
            System.out.println("Wähle eine andere zweite Frucht. Es gibt keine Äpfel mehr!");
            add2
        }
    }
}
    public void add2() {
                Scanner scanner = new Scanner (System.in);
        System.out.print("Wähle deine zweite Frucht: ");
        Frucht2 = scanner.next();
        Korb2();
    }
}

Ist etwas lang, sorry dafür. Aber hoffe das das zur Antwort beiträgt
 
Zuletzt bearbeitet von einem Moderator:

Kadezzo

Mitglied
So mittlerweile ist das Spiel fertig. Danke nochmal für die Hilfe. Es handelt sich um das Kinderspiel "Obstgarten". Wer sich für den fertigen Code interessiert & vielleicht Lust hat etwas daraus zu machen (Grafische Oberfläche zum Beispiel), hier ist er mit allen Klassen:

Spielbrett
Code:
import java.util.Scanner;
public class Spielbrett{
    public Apfel[] meineAepfel;
    private Kirsche[] meineKirschen;
    private Birne[] meineBirnen;
    private Pflaume[] meinePflaumen;
    private Würfel meinWuerfel;
    private Rabe meinRabe;
    private Obst meinObst;
    private Korb meinKorb;
    private int a = 10;
    private int k = 10;
    private int p = 10;
    private int b = 10;
    private String Frucht1;
    private String Frucht2;
    public Spielbrett(Rabe pRabe, Korb pKorb) {
        meinRabe = pRabe;
        meinKorb = pKorb;
        meinWuerfel = new Würfel();
        meineAepfel = new Apfel[a];
        meineKirschen = new Kirsche[k];
        meineBirnen = new Birne[b];
        meinePflaumen = new Pflaume[p];
        for(a = 0; a<meineAepfel.length; a++){
            meineAepfel[a] = new Apfel();
        }
        for( k = 0; k<meineKirschen.length; k++){
            meineKirschen[k] = new Kirsche();
        }
        for(b = 0; b<meineBirnen.length; b++){
            meineBirnen[b] = new Birne();
        }
        for(p = 0; p<meinePflaumen.length; p++){
            meinePflaumen[p] = new Pflaume();
        }
    }
    public Korb getKorb(){
        return meinKorb;
    }
    public Rabe getRabe(){
        return meinRabe;
    }
    public Würfel getWürfel(){
        return meinWuerfel;
    }
    public void würfeln(){
        meinWuerfel.würfeln();
        if(meineBirnen.length == 0 && meineKirschen.length == 0 && meineAepfel.length == 0 && meinePflaumen.length == 0) {
            System.out.println("Die Spieler haben das Spiel gewonnen");
        } else {
            if(meinRabe.puzzleteile < 9) {
                if(getWürfel().seite2 == 1/*Apfel*/) {
                    if(meineAepfel.length > 0) {
                        a = a - 1;
                        meineAepfel = new Apfel[a];
                        System.out.println("Apfel gewürfelt. Übrige Äpfel: " + meineAepfel.length);
                    }  
                    else {
                        System.out.println("Bitte erneut würfeln, es gibt keine Äpfel mehr!");
                    }
                }
                if(getWürfel().seite2 == 0/*Kirsche*/) {
                    if(meineKirschen.length > 0) {
                        k = k - 1;
                        meineKirschen = new Kirsche[k];
                        System.out.println("Kirsche gewürfelt. Übrige Kirschen: " + meineKirschen.length);
                    }
                    else {
                        System.out.println("Bitte erneut würfeln, es gibt keine Kirschen mehr!");
                    }
                }
                if(getWürfel().seite2 == 2/*Pflaume*/) {
                    if(meinePflaumen.length > 0) {
                        p = p - 1;
                        meinePflaumen = new Pflaume[p];
                        System.out.println("Pflaume gewürfelt. Übrige Pflaumen: " + meinePflaumen.length);
                    }
                    else {
                        System.out.println("Bitte erneut würfeln, es gibt keine Pflaumen mehr!");
                    }
                }
                if(getWürfel().seite2 == 3/*Birne*/) {
                    if(meineBirnen.length > 0) {
                        b = b - 1;
                        meineBirnen = new Birne[b];
                        System.out.println("Birne gewürfelt. Übrige Birnen: " + meineBirnen.length);
                    }
                    else {
                        System.out.println("Bitte erneut würfeln, es gibt keine Birnen mehr!");
                    }
                }
                if(getWürfel().seite2 == 4/*Korb*/) {
                    Korb1();
                }
            } else {
                System.out.println("Der Rabe hat gewonnen!");
            }
        }
    }
    public void add()
    {
        if(Frucht1.equals("Apfel")) {
            if(meineAepfel.length > 0){
                meinKorb.apfelHinzufuegen();
                a = a - 1;
                meineAepfel = new Apfel[a];
                System.out.println("Apfel gewählt. Übrige Äpfel: " + meineAepfel.length);
                Scanner scanner1 = new Scanner (System.in);
                System.out.print("Wähle deine zweite Frucht: "); 
                Frucht2 = scanner1.next();
                Korb2();
            } else {
                System.out.println("Wähle eine andere erste Frucht. Es gibt keine Äpfel mehr!");
                Korb1();
            }
        }
        else if(Frucht1.equals("Kirsche")) {
            if(meineKirschen.length > 0){
                meinKorb.kirscheHinzufuegen();
                k = k - 1;
                meineKirschen = new Kirsche[k];
                System.out.println("Kirsche gewählt. Übrige Kirschen: " + meineKirschen.length);
                Scanner scanner1 = new Scanner (System.in);
                System.out.print("Wähle deine zweite Frucht: "); 
                Frucht2 = scanner1.next();
                Korb2();
            } else {
                System.out.println("Wähle eine andere erste Frucht. Es gibt keine Kirschen mehr!");
                Korb1();
            }
        }
        else if(Frucht1.equals("Birne")) {
            if(meineBirnen.length > 0){
                meinKorb.birneHinzufuegen();
                b = b - 1;
                meineBirnen = new Birne[b];
                System.out.println("Birne gewählt. Übrige Birnen: " + meineBirnen.length);
                Scanner scanner1 = new Scanner (System.in);
                System.out.print("Wähle deine zweite Frucht: "); 
                Frucht2 = scanner1.next();
                Korb2();
            } else {
                System.out.println("Wähle eine andere erste Frucht. Es gibt keine Birnen mehr!");
                Korb1();
            }
        }
        else if(Frucht1.equals("Pflaume")) {
            if(meinePflaumen.length > 0){
                meinKorb.pflaumeHinzufuegen();
                p = p - 1;
                meinePflaumen = new Pflaume[p];
                System.out.println("Pflaume gewählt. Übrige Pflaumen: " + meinePflaumen.length);
                Scanner scanner1 = new Scanner (System.in);
                System.out.print("Wähle deine zweite Frucht: "); 
                Frucht2 = scanner1.next();
                Korb2();
            } else {
                System.out.println("Wähle eine andere erste Frucht. Es gibt keine Pflaumen mehr!");
                Korb1();
            }
        }
        else {
            System.out.println("Dies ist keine gültige Frucht. Wähle zwischen Apfel, Birne, Pflaume & Kirsche!");
            Korb1();
        }
    }
    public void Korb1() {
        Scanner scanner = new Scanner (System.in);
        System.out.print("Wähle deine erste Frucht: "); 
        Frucht1 = scanner.next();  
        add();
    }
    public void Korb2() {
        if(Frucht2.equals("Apfel")) {
            if(meineAepfel.length > 0){
                meinKorb.apfelHinzufuegen();
                a = a - 1;
                meineAepfel = new Apfel[a];
                System.out.println("Apfel gewählt. Übrige Äpfel: " + meineAepfel.length);
            } else {
                System.out.println("Wähle eine andere zweite Frucht. Es gibt keine Äpfel mehr!");
                Korb1();
            }
        }
        else if(Frucht2.equals("Kirsche")) {
            if(meineKirschen.length > 0){
                meinKorb.kirscheHinzufuegen();
                k = k - 1;
                meineKirschen = new Kirsche[k];
                System.out.println("Kirsche gewählt. Übrige Kirschen: " + meineKirschen.length);
            } else {
                System.out.println("Wähle eine andere zweite Frucht. Es gibt keine Kirschen mehr!");
                add2();
            }
        }
        else if(Frucht2.equals("Birne")) {
            if(meineBirnen.length > 0){
                meinKorb.birneHinzufuegen();
                b = b - 1;
                meineBirnen = new Birne[b];
                System.out.println("Birne gewählt. Übrige Birnen: " + meineBirnen.length);
            } else {
                System.out.println("Wähle eine andere zweite Frucht. Es gibt keine Birnen mehr!");
                add2();
            }
        }
        else if(Frucht2.equals("Pflaume")) {
            if(meinePflaumen.length > 0){
                meinKorb.pflaumeHinzufuegen();
                p = p - 1;
                meinePflaumen = new Pflaume[p];
                System.out.println("Pflaume gewählt. Übrige Pflaumen: " + meinePflaumen.length);
            } else {
                System.out.println("Wähle eine andere zweite Frucht. Es gibt keine Pflaumen mehr!");
                add2();
            }
        }
        else {
            System.out.println("Dies ist keine gültige Frucht. Wähle zwischen Apfel, Birne, Pflaume & Kirsche!");
            add2();
        }
    }
    public void add2() {
        Scanner scanner = new Scanner (System.in);
        System.out.print("Wähle deine zweite Frucht: "); 
        Frucht2 = scanner.next();
        Korb2();
    }
}

Obst

Code:
public class Obst{
    public String farbe;
public Obst(String pFarbe){
    farbe = pFarbe;
    }
  
}

Kirsche, Apfel, Birne, Pflaume (Am Beispiel Kirsche)

Code:
public class Kirsche extends Obst{
    public Kirsche(){
        super("rot");
    }
}

Korb

Code:
public class Korb{
    private Apfel[] meineAepfel;
    private Kirsche[] meineKirschen;
    private Birne[] meineBirnen;
    private Pflaume[] meinePflaumen;
    public int a = 0;
    public int k = 0;
    public int b = 0;
    public int p = 0;
  
    public void apfelHinzufuegen() {
        a = a + 1;
        meineAepfel = new Apfel[a];
       
        for(a = 0; a<meineAepfel.length; a++){
            meineAepfel[a] = new Apfel();
        }
    }
    public void kirscheHinzufuegen() {
        k = k + 1;
        meineKirschen = new Kirsche[k];
        for(k = 0; k<meineKirschen.length; k++){
            meineKirschen[k] = new Kirsche();
        }
    }
    public void birneHinzufuegen() {
        b = b + 1;
        meineBirnen = new Birne[b];
        for(b = 0; b<meineBirnen.length; b++){
            meineBirnen[b] = new Birne();
        }
    }
    public void pflaumeHinzufuegen() {
        p = p + 1;
        meinePflaumen = new Pflaume[p];
        for(p = 0; p<meinePflaumen.length; p++){
            meinePflaumen[p] = new Pflaume();
        }
    }
 
  
   
}

Spieler

Code:
public class Spieler{
    private Spielbrett meinSpielbrett;
    private Korb meinKorb;
    public Spieler(Spielbrett pSpielbrett, Korb pKorb){
        meinSpielbrett = pSpielbrett;
        meinKorb = pKorb;
    }
    public void würfeln(){
        meinSpielbrett.würfeln();
        if (meinSpielbrett.getWürfel().seite2==5/*Rabe*/) {
            meinSpielbrett.getRabe().teilHinzufuegen();
        }
       
        else if (meinSpielbrett.getWürfel().seite2==0/*Kirsche*/) {
            //meinKorb.k = meinKorb.k + 1;
            meinKorb.kirscheHinzufuegen();
           
        }
       
        else if (meinSpielbrett.getWürfel().seite2==1/*Apfel*/) {
            //meinKorb.a = meinKorb.a + 1;
            meinKorb.apfelHinzufuegen();
        }
       
        else if (meinSpielbrett.getWürfel().seite2==2/*Pflaume*/) {
            //meinKorb.p = meinKorb.p + 1;
            meinKorb.pflaumeHinzufuegen();
        }
       
        else if (meinSpielbrett.getWürfel().seite2==3/*Birne*/) {
            //meinKorb.b = meinKorb.b + 1;
            meinKorb.birneHinzufuegen();
        }
        else if (meinSpielbrett.getWürfel().seite2==6/*Korb*/) {
            meinSpielbrett.add();
   }
}
}

Rabe

Code:
public class Rabe{
    public int puzzleteile;
    private String farbe;
    public Rabe(){
        farbe = "Schwarz";
        puzzleteile = 0;
    }
    public void teilHinzufuegen(){
        if (puzzleteile<9){
            puzzleteile++;
            System.out.println("Der Rabe hat aktuell " + puzzleteile + " Teile");
            if(puzzleteile==9){
                System.out.println("Der Rabe hat gewonnen!");
            }
        }
      
    }
    public int getPuzzleteile(){
        return puzzleteile;
    }
}

Würfel

Code:
import java.util.Random;
public class Würfel
{
    private String s1;
    private String s2;
    private String s3;
    private String s4;
    private String s5;
    private String s6;
    public int seite;
    public int seite2;
    public Würfel()
    {
      s5 = "Korb gewürfelt.";
      s6 = "Rabe gewürfelt.";
       
    }
    public void würfeln(){
        Random zufallsgenerator = new Random();
        int seite = zufallsgenerator.nextInt(6);
       
        seite2 = seite;
       
       
      
      
      if (seite==4){
            System.out.println(s5);
        }
        else if (seite==5){
            System.out.println(s6);
        }
      
      
       
    }
   
   
 
}
 

MoxxiManagarm

Top Contributor
Huhu,

ich hoffe du hast nichts dagegen, wenn ich dir noch ein paar Tipps mit auf den Weg gebe:

1.
Java:
public class Würfel
public void würfeln()
Umlaute können Probleme bereiten. Bitte versuche von vornherein darauf zu verzichten.

2.
Java:
if(meineAepfel.length > 0){
Ich frage mich, wie die Länge deines Arrays 0 wird

3.
Java:
if(getWürfel().seite2 == 0/*Kirsche*/) {
- für mich ist total unklar was seite1 und seite2 sind. bzw ich denke, dass seite2 die gewürfelte Augenzahl ist, aber warum heißt das nicht sprechender? Es ist irritierend.
- anstatt integers mit Kommentaren zu versehen ist es ratsam sprechende static Werte beispielsweise zu verwenden oder mit der gewürfelten Zahl auf ein 2D-Array zugreifen.

4. Du hast generell viel duplizierten Code. Versuche diesen für alle Objekte zu generalisieren.

5. Mir erschließt sich nicht ganz wozu du Arrays von den Früchten für dein Spiel hast. Würde nicht ein Zähler alleine ausreichen?

6.
Java:
public void Korb1() {
Bitte schreibe Methoden in Java immer klein

7. Bitte verwenden hier im Forum für Java Code immer entsprechende Tags
[code=java][/code]


LG Moxxi
 

Javinner

Top Contributor
Mal ganz nebenbei: wie ist es eigentlich, wenn man das Spiel, nehmen wir als Beispiel gerade das hier, hier samt Code usw. veröffentlicht. Gibt es da irgendwelche Rechte, Paragraphen zu beachten? Wo erfahre ich, ob ein Spiel unter Copyright steht? Wo kann man sich da einlesen?

Sorry für solche Fragen, aber ich weiß es leider nicht besser.
 

MoxxiManagarm

Top Contributor
Mein Wissensstand wär folgender, man darf mich korrigieren:
1. Eingetragene Namen dürfen nicht verwendet werden, es dürfte also ggf. nicht "Obstgarten" genannt werden
2. Die GUI darf nicht dem Original nicht nachempfunden werden, das Design ist also geschützt. Das Spielbrett darf also keine direkte Ähnlichkeit mit dem Original haben.
3. Auch sollte die Beschreibung oder Spielanleitungen nicht kopiert werden. Die Texte sind wie das Design geschützt.

Das heißt um wirklich Distanz in diesem Fall zum Original zu bekommen könnte man z.B. folgende Dinge tun:
- Benenne es anders und verwende andere Früchte. Wie wäre es z.B . mit Gemüse?
- Das Puzzle ist nicht wirklich grundlegend, das könnte alles Mögliche sein. Nimm statt dem Raben z.B. den bösen Max und fülle sein Sparschwein
- Im Original sind die 4 Bäume in einem Kreis angeordnet. Ordne sie in der Reihe an, mach aus den Bäumen Beete
- Das Original hat 4 Körbe, also quasi 4 Spieler. Belasse es bei einem.
- ...
--> Je mehr Abweichungen umso besser

Ansonsten wird sicherlich kein Vertreiber solche "Übungen" nachverfolgen. Wenn du dein Remake nicht kommerziell vetreibst wird es selten einen Kläger geben
 
Zuletzt bearbeitet:

MoxxiManagarm

Top Contributor
Und hier mal eine Variante, wie es auf Modellebene zusammengekürzt aussehen könnte:
Java:
package javaforum.org.obstgarten;

import java.util.Random;
import java.util.Scanner;

public class Spiel {
    private Obstsammlung baeume;
    private Obstsammlung spieler;
   
    private int rabe;
   
    public Spiel() {
        baeume = new Obstsammlung(10, 10, 10, 10);
        spieler = new Obstsammlung(0, 0, 0, 0);
       
        rabe = 0;
    }
   
    public void spiele() {
        print();
       
        do {
            switch ((new Random()).nextInt(6)) {
            case 0:
                baeume.transferApfel(spieler);
                break;
            case 1:
                baeume.transferBirne(spieler);
                break;
            case 2:
                baeume.transferKirsche(spieler);
                break;
            case 3:
                baeume.transferPflaume(spieler);
                break;
            case 4:
                entscheide();
                print();
               
                entscheide();
                break;
            case 5:
                rabe++;               
            }
           
            print();
        } while(baeume.zaehle() > 0 && rabe < 9);
       
        System.out.println("Spiel vorbei");
    }
   
    private void print() {
        System.out.println("Spielfeld: " + baeume);
        System.out.println("Korb: " + spieler);
        System.out.println("Rabe: " + rabe);
        System.out.println("-----------------------------------");
    }
   
    private void entscheide() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Wähle 0-3: ");
        while(true) {
            switch(scanner.nextInt()) {
            case 0:
                baeume.transferApfel(spieler);
                return;
            case 1:
                baeume.transferBirne(spieler);
                return;
            case 2:
                baeume.transferKirsche(spieler);
                return;
            case 3:
                baeume.transferPflaume(spieler);
                return;
            default:
                System.out.print("Wähle nochmal: ");
            }
        }
    }
   
    public static void main(String[] args) {
        (new Spiel()).spiele();
    }
}

package javaforum.org.obstgarten;

public class Obstsammlung {   
    private int apfel;
    private int birne;
    private int kirsche;
    private int pflaume;
   
    public Obstsammlung(int apfel, int birne, int kirsche, int pflaume) {
        this.apfel = apfel;
        this.birne = birne;
        this.kirsche = kirsche;
        this.pflaume = pflaume;
    }
   
    public int zaehle() {
        return apfel + birne + kirsche + pflaume;
    }
   
    public void transferApfel(Obstsammlung sammlung) {
        if(apfel > 0) {
            apfel--;
            sammlung.apfel++;
        }
    }
   
    public void transferBirne(Obstsammlung sammlung) {
        if(birne > 0) {
            birne--;
            sammlung.birne++;
        }
    }
   
    public void transferKirsche(Obstsammlung sammlung) {
        if(kirsche > 0) {
            kirsche--;
            sammlung.kirsche++;
        }
    }
   
    public void transferPflaume(Obstsammlung sammlung) {
        if(pflaume > 0) {
            pflaume--;
            sammlung.pflaume++;
        }
    }
   
    @Override
    public String toString() {
        return "Äpfel: " + apfel + ", " +
                "Birnen: " + birne + ", " +
                "Kirschen: " + kirsche + ", " +
                "Pflaumen: " + pflaume;
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
el_pato DialogFenster wird nicht in Schleife geöffnet? Java Basics - Anfänger-Themen 30
J if-Schleife innerhalb einer if-Schleife wird in der Konsole nicht gelesen Java Basics - Anfänger-Themen 4
P Bedingung in Schleife wird nicht ausgeführt Java Basics - Anfänger-Themen 5
N while Schleife wird nicht beendet, obwohl Sie hätte breaken sollen Java Basics - Anfänger-Themen 4
D Schleife wird nicht "ausgeführt" Java Basics - Anfänger-Themen 10
G warum wird die Schleife nicht bis zum Ende ausgeführt Java Basics - Anfänger-Themen 10
T While-Schleife. Wert wird nicht erhöht? Java Basics - Anfänger-Themen 2
J Methoden Wert im Block einer for-Schleife wird nicht aktualisiert Java Basics - Anfänger-Themen 9
E JButton-Text wird in Schleife nicht geändert Java Basics - Anfänger-Themen 4
J Schleife wird nicht richtig abgearbeitet Java Basics - Anfänger-Themen 6
T JLabel wird nicht gesetzt in Schleife Java Basics - Anfänger-Themen 9
D for-Schleife wird nicht ausgerechnet Java Basics - Anfänger-Themen 8
M warum wird diese while schleife nicht unterbrochen Java Basics - Anfänger-Themen 12
S for-Schleife wird ignoriert Java Basics - Anfänger-Themen 15
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
mor16Euro Erste Schritte Wie nennt man eine While oder For schleife die nie Ausgeführt wird Java Basics - Anfänger-Themen 5
C Compiler-Fehler Wird eine if Bedingung nach einer for-Schleife nach jeder Iteration überprüft? Java Basics - Anfänger-Themen 1
C while-Schleife wird zuoft durchgeführt Java Basics - Anfänger-Themen 2
A was wird in der while schleife gemacht Java Basics - Anfänger-Themen 3
V wie kann ich eine Schleife pausieren, bis ein Jbutton gedrückt wird ? Java Basics - Anfänger-Themen 17
A do while Schleife wird 2 mal durchlaufen Java Basics - Anfänger-Themen 3
P Vereinfachte for-Schleife wird in umgekehrter Reihenfolge ausgewertet Java Basics - Anfänger-Themen 7
C Kara - schleife wird nur 1x ausgeführt Java Basics - Anfänger-Themen 2
J äußere for schleife wird nur einmal durchlaufen Java Basics - Anfänger-Themen 8
A For Schleife - Iterator wird null Java Basics - Anfänger-Themen 7
G while (true) ? wodurch wird diese Schleife beendet? Java Basics - Anfänger-Themen 6
P Schleife wird falsch durchlaufen!? Java Basics - Anfänger-Themen 3
F schleife wird abgebrochen aber warum? Java Basics - Anfänger-Themen 3
T Hilfe: Methoden wird in Schleife nur 1x ausgeführt Java Basics - Anfänger-Themen 2
V If Schleife wird beim ausführen einfach ignoriert Java Basics - Anfänger-Themen 4
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
T if-else Bedingung wird ignoriert Java Basics - Anfänger-Themen 4
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
P Webseite vom Smartmeter wird nur unleserlich angezeigt Java Basics - Anfänger-Themen 7
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
Oneixee5 Maven Plugin wird 2 mal ausgeführt Java Basics - Anfänger-Themen 10
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
C Was tun wenn .class erwartet wird ? Java Basics - Anfänger-Themen 6
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
K Warum wird mir hier nach dem ersten Durchlauf zwei mal "welchen Datentyp wollen sie übergeben?" ausgegeben ? Java Basics - Anfänger-Themen 1
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
schemil053 Multithread - Input verrutscht während etwas ausgegeben wird Java Basics - Anfänger-Themen 6
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
_user_q Timer - ScheduledExecutorService wird schon vorher beendet Java Basics - Anfänger-Themen 5
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
L Switch-Case Multiplikation wird nicht ausgegeben Java Basics - Anfänger-Themen 1
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
sserio Math. Befehl wird rot markiert Java Basics - Anfänger-Themen 5
M Rechteck wird nicht angezeigt Java Basics - Anfänger-Themen 3
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
S Methoden Return Rückgabewert wird nicht übergeben Java Basics - Anfänger-Themen 8
M Mein quellcode wird nicht in der Konsole ausgegeben Java Basics - Anfänger-Themen 3
I Code wird nicht ausgeführt Java Basics - Anfänger-Themen 2
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
K Präzedenregeln in Java sagen, dass +expr und -expr vor + von Addition und - von Addition stehen, warum wird dann z. B. a+b als eine Addition ausgeführ Java Basics - Anfänger-Themen 7
M Was wird hier genau getestet? Java Basics - Anfänger-Themen 9
M Wie schreibe ich eine if-Verzweigung um, so dass ein Bedingungsoperator benutzt wird? Java Basics - Anfänger-Themen 9
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
M Referenzen zuweisen und wird gleichzeitig ausgeführt Java Basics - Anfänger-Themen 6
O System.out.println wird nicht ausgegeben? Java Basics - Anfänger-Themen 11
Zrebna Umgebungsvariable Wieso wird meine verwendete JDK-Version in der Prompt nicht erkannt? Java Basics - Anfänger-Themen 6
P Apache Derby wird in Eclipse trotz Anbindung nicht gefunden Java Basics - Anfänger-Themen 6
H Array wird als Rückgabewert nicht akzeptiert? Java Basics - Anfänger-Themen 2
Poppigescorn scan.nextInt() wiederholen bis eine Zahl eingeben wird Java Basics - Anfänger-Themen 7
F Session wird mehrfach erzeugt Java Basics - Anfänger-Themen 11
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
fuerteb Compiler-Fehler Methode wird nicht bzw. als Fehler erkannt Java Basics - Anfänger-Themen 4
L JScrollPane wird nicht angezeigt Java Basics - Anfänger-Themen 10
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
J JTable Titel wird nicht angezeigt Java Basics - Anfänger-Themen 6
krgewb Long wird gerundet Java Basics - Anfänger-Themen 2
Zwanglos Warum wird nur die erste Zeile im while Block ausgeführt? Java Basics - Anfänger-Themen 8
F Wieso wird immer die falsche Mausposition angegeben? Java Basics - Anfänger-Themen 1
H GridPane wird nicht angezeigt Java Basics - Anfänger-Themen 0
M Was habe ich hier falsch, dass wenn ich z.B.: 11 eingebe mir false zurück gegeben wird? Java Basics - Anfänger-Themen 2
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
H Endkapital wird nicht korrekt ausgegeben. Java Basics - Anfänger-Themen 5
C Methodenrückgabe wird in der main nicht berücksichtigt Java Basics - Anfänger-Themen 2
X compareTo Methode wird ignoriert Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben