Sind meine If-Statements richtig angesetzt ?

Diskutiere Sind meine If-Statements richtig angesetzt ? im Java Basics - Anfänger-Themen Bereich.
T

temi

Hier sind noch Fehler, z.B.
Java:
                }if((scanner.next().equals("ja"))) { // hier erfolgt eine Eingabe vom Benutzer
                    System.out.println("Handball");
                }if((scanner.next().equals("nein"))) { // hier erfolgt eine weitere Eingabe...
                    System.out.println("Fallschirmspringen");
 
B

Basics_Java

Java:
import java.util.Scanner;

public class SportRatgeber {
    String s1 = "ja";
    String s2 = "nein";
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("Wie heisst du?");
        String name = scanner.nextLine();
        System.out.println("Mein Name ist: " + name);
        System.out.println("Hallo, " +name+"!");
        System.out.println("Wie alt bist du, "+name);
        int alter = scanner.nextInt();
        System.out.println(alter);
        
        String antwort = scanner.next();
        if(alter<=15){
            System.out.println("Frage mal die Eltern");
        
        }else if(alter<=25){
            System.out.println("Liebst du Aufregung?");
            
            if(antwort.equals("ja")) {
                System.out.println("In einer Gruppe?");
                }if((antwort.equals("ja"))) {
                    System.out.println("Handball");
                }if((antwort.equals("nein"))) {
                    System.out.println("Fallschirmspringen");
            
            }if((antwort.equals("nein"))) {
                System.out.println("Viel Zeit haben?");
                }if((antwort.equals("ja"))) {
                    System.out.println("Golf");
                }if((antwort.equals("nein"))){
                        System.out.println("Joggen");
                }
        
        }else if(alter <=40) {
            System.out.println("Die Natur lieben?");
            if((antwort.equals("ja"))){
                System.out.println("Wandern");
            }if((antwort.equals("nein"))){
                System.out.println("Yoga");
            }
        
        }else if(alter>=41) {
            System.out.println("Frage mal den Arzt");
        }
    }
}
Ich habe nun eine String variable aufgesetzt, welcher die Antworten speichert, doch nun, wenn ich das Programm starte, dann fragt er mich nach meinem Alter und das wars. Der stellt die Fragen nicht mehr, dass hat wahrscheinlich was mit der neuen Variable zutun stimmt das ?
 
MoxxiManagarm

MoxxiManagarm

Wenn eine neue Frage gestellt wirst musst du schon die Antwort wieder verwenden. In deiner aktuellen Fassung nimmst du eine Antwort entgegen vor dem Entscheidungbaum und änderst sie nie wieder
 
T

temi

Du musst jedesmal, wenn eine Antwort verlangt wird
String antwort = scanner.next();
Das ist eine Frage, auf die du (hoffentlich) eine Antwort erhältst. Du musst natürlich jedesmal fragen, wenn du eine Antwort haben möchtest.
Java:
        String antwort = scanner.next(); // Frage 1
        if(alter<=15){
            System.out.println("Frage mal die Eltern");
        
        }else if(alter<=25){
            System.out.println("Liebst du Aufregung?");
            antwort = scanner.next(); // Frage 2
            if(antwort.equals("ja")) {
            // usw.
 
K

Kreuzberg0

hab den Entscheidungsbaum mal fertig gestellt
Von Scanner ist immer abzuraten... Habe das mal mit Berücksichtigung der guten Ratschläge von @temi und @JustNobody angepasst:
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class SportRatgeber {
	static String s1 = "ja";
	static String s2 = "nein";

	static int nextInt(BufferedReader scanner) throws NumberFormatException, IOException {
		return Integer.parseInt(scanner.readLine());
	}

	public static void main(String[] args) throws IOException {
		BufferedReader scanner = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("Wie heisst du?");
		String name = scanner.readLine();
		System.out.println("Mein Name ist: " + name);
		System.out.println("Hallo, " + name + "!");
		System.out.println("Wie alt bist du, " + name);
		int alter = nextInt(scanner);
		System.out.println(alter);

		if (alter <= 15) {

			System.out.println("Frage mal die Eltern");

		} else if (alter <= 25) {
			System.out.println("Liebst du Aufregung?");
			if (s1.equals(scanner.readLine())) {
				System.out.println("In einer Gruppe?");
				if (s1.equals(scanner.readLine()))
					System.out.println("Handball");
				else
					System.out.println("skydiving");
			} else {
				System.out.println("Viel Zeit haben?");
				if (s1.equals(scanner.readLine()))
					System.out.println("Golf");
				else
					System.out.println("Joggen");
			}
		} else if (alter <= 40) {
			System.out.println("Die Natur lieben?");
			if (s2.equals(scanner.readLine()))
				System.out.println("Yoga");
			else
				System.out.println("Wandern");
		} else {

			System.out.println("Frage mal den Arzt");

		}
	}
}
Tipp 1: Entscheidungsbäume können schnell "wuchern", es gibt Algorithmen ,um diese "abzuflachen",
Tipp 2: if und else Blöcke sollten mit { } umschlossen werden, außer bei der "Blattebene",
Tipp 3: wenn später eine Datenstruktur hinzukommt, kannst du den Code "dynamisch" machen,

Ich hoffe, das hilft erstmal. Grüße aus Berlin!
 
B

Basics_Java

Von Scanner ist immer abzuraten... Habe das mal mit Berücksichtigung der guten Ratschläge von @temi und @JustNobody angepasst:
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class SportRatgeber {
    static String s1 = "ja";
    static String s2 = "nein";

    static int nextInt(BufferedReader scanner) throws NumberFormatException, IOException {
        return Integer.parseInt(scanner.readLine());
    }

    public static void main(String[] args) throws IOException {
        BufferedReader scanner = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Wie heisst du?");
        String name = scanner.readLine();
        System.out.println("Mein Name ist: " + name);
        System.out.println("Hallo, " + name + "!");
        System.out.println("Wie alt bist du, " + name);
        int alter = nextInt(scanner);
        System.out.println(alter);

        if (alter <= 15) {

            System.out.println("Frage mal die Eltern");

        } else if (alter <= 25) {
            System.out.println("Liebst du Aufregung?");
            if (s1.equals(scanner.readLine())) {
                System.out.println("In einer Gruppe?");
                if (s1.equals(scanner.readLine()))
                    System.out.println("Handball");
                else
                    System.out.println("skydiving");
            } else {
                System.out.println("Viel Zeit haben?");
                if (s1.equals(scanner.readLine()))
                    System.out.println("Golf");
                else
                    System.out.println("Joggen");
            }
        } else if (alter <= 40) {
            System.out.println("Die Natur lieben?");
            if (s2.equals(scanner.readLine()))
                System.out.println("Yoga");
            else
                System.out.println("Wandern");
        } else {

            System.out.println("Frage mal den Arzt");

        }
    }
}
Tipp 1: Entscheidungsbäume können schnell "wuchern", es gibt Algorithmen ,um diese "abzuflachen",
Tipp 2: if und else Blöcke sollten mit { } umschlossen werden, außer bei der "Blattebene",
Tipp 3: wenn später eine Datenstruktur hinzukommt, kannst du den Code "dynamisch" machen,

Ich hoffe, das hilft erstmal. Grüße aus Berlin!
Danke dir für die Hilfe.
 
Thema: 

Sind meine If-Statements richtig angesetzt ?

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben