Błąd w programie używającym drzewa decyzyjnego

0
import java.util.Scanner;
public class drzewo
{

public static void main(String[] args)
{
	Scanner input = new Scanner(System.in);
	System.out.println("Na czym najbardziej Ci zależy, grafika, wymagania, fabuła czy rozgrywka");
String x = input.nextLine();
	
	
	if (x.equals("grafika"))
	{
	System.out.println("Jaki rodzaj grafiki chcesz, komiksowa czy realistyczna?");
	Scanner inputt = new Scanner(System.in);
	String z = inputt.nextLine();
	if (z.equals("komiksowa"));
	{
		System.out.println("Gra dla Ciebie to Okami");
	}}
	else if (z.equals("realistyczna"))
	{
		System.out.println("Gra dla Ciebie to Assassins Creed");
	}
	else if (x.equals("wymagania"))
	{
	System.out.println("Zależy Ci na wysokich wymganiach, czy na niskich?");
	Scanner input = new Scanner(System.in);
	String c = input.nextLine();
	if (c.equals("wysokich"))
	{
		System.out.println("Gra dla Ciebie to Grand Theft Auto V")
	}
	else if (c.equals("niskich"))
	{
		System.out.println("Gra dla Ciebie to Tibia")
	}}
	else if (x.equals("rozgrywka"))
	{
	System.out.println("Chcesz by to była gra logiczna, strzelanka, strategia czy RPG?");
	Scanner input = new Scanner(System.in);
	String d = input.nextLine();
	if (d.equals("logiczna"))
	{
		System.out.println("Gra dla Ciebie to Quizowanie")
	}
	else if (d.equals("strzelanka"))
	{
		System.out.println("Gra dla Ciebie to Counter-Strike")
	}
	else if (d.equals("strategia"))
	{
		System.out.println("Gra dla Ciebie to Age of Empires")
	}
		else if (d.equals("rpg"))
	{
		System.out.println("Gra dla Ciebie to Dark Souls")
	}}
	else if (x.equals("wymagania")
	{
	System.out.println("Zależy Ci by fabuła była fantasy, czy realistyczna?");
	Scanner input = new Scanner(System.in);
	String e = input.nextLine();
	if (e.equals("fantasy"))
	{
		System.out.println("Gra dla Ciebie to Pillars of Eternity")
	}
	else if (e.equals("realistyczna"))
	{
		System.out.println("Gra dla Ciebie to Syberia")
	}}}

Zrobiłem takie oto drzewo decyzyjne, jestem kompletnym laikiem, całość polega na tym by wpisywać odpowiedź na pytanie i dojść do rozwiązania odpowiedniego dla siebie, tylko pojawia mi się błąd już przy linijce

else if (z.equals("realistyczna"))

Ktoś pomoże? Potrzebuje na jutro już wysłać to gotowe, a siedzę i się głowię nad tym

dodanie znacznika <code class="java"> - @furious programming

0

Zacznij programować jakims IDE a nie lodówką. Jak sformatujesz ten kod to zobaczysz że źle domykasz klamry.

0

ok, jest takie coś:

import java.util.Scanner;
public class drzewo
{

public static void main(String[] args)
{
	Scanner input = new Scanner(System.in);
	System.out.println("Na czym najbardziej Ci zależy, grafika, wymagania, fabuła czy rozgrywka");
String x = input.nextLine();
	
	
	if (x.equals("grafika"))
	{
	System.out.println("Jaki rodzaj grafiki chcesz, komiksowa czy realistyczna?");
	Scanner inputt = new Scanner(System.in);
	String z = inputt.nextLine();
	if (z.equals("komiksowa"))
	{
		System.out.println("Gra dla Ciebie to Okami");
	}
	else if (z.equals("realistyczna"))
	{
		System.out.println("Gra dla Ciebie to Assassins Creed");
	}}
	else if (x.equals("wymagania"))
	{
	System.out.println("Zależy Ci na wysokich wymganiach, czy na niskich?");
	Scanner inputa = new Scanner(System.in);
	String c = input.nextLine();
	if (c.equals("wysokich"))
	{
		System.out.println("Gra dla Ciebie to Grand Theft Auto V");
	}
	else if (c.equals("niskich"))
	{
		System.out.println("Gra dla Ciebie to Tibia");
	}}
	else if (x.equals("rozgrywka"))
	{
	System.out.println("Chcesz by to była gra logiczna, strzelanka, strategia czy RPG?");
	Scanner inputx = new Scanner(System.in);
	String d = input.nextLine();
	if (d.equals("logiczna"))
	{
		System.out.println("Gra dla Ciebie to Quizowanie");
	}
	else if (d.equals("strzelanka"))
	{
		System.out.println("Gra dla Ciebie to Counter-Strike");
	}
	else if (d.equals("strategia"))
	{
		System.out.println("Gra dla Ciebie to Age of Empires");
	}
		else if (d.equals("rpg"))
	{
		System.out.println("Gra dla Ciebie to Dark Souls");
	}}
	else if (x.equals("wymagania"));
	{
	System.out.println("Zależy Ci by fabuła była fantasy, czy realistyczna?");
	Scanner inputc = new Scanner(System.in);
	String e = input.nextLine();
	if (e.equals("fantasy"))
	{
		System.out.println("Gra dla Ciebie to Pillars of Eternity");
	}
	else if (e.equals("realistyczna"))
	{
		System.out.println("Gra dla Ciebie to Syberia");
	}}}}}
	
	

Program działa, ale jak wpisze jakąś inną odpowiedź niż grafika to nie wyświetla nic... a gdy już wyświetli ostateczną odpowiedź z grafiki, np. "Gra dla Ciebie to Okami" to zadaje inne pytanie, jak zrobić by to był koniec? Oraz co muszę poprawić by inne odpowiedzi działały

Edit: Poradzilem sobie, dodałem klamrę tam gdzie trzeba i działają inne odpowiedzi, tylko jak zrobić by podaniu tej ostatecznej konczylo program zamiast zadawac kolejne pytanie?

0

Po pierwsze, formatuj porządnie kod. U siebie możesz trzymać śmietnik, innym pokazuj czytelny kod.
Po drugie, nie twórz tylu obiektów Scanner, wystarczy jeden

import java.util.Scanner;
public class drzewo
{
 
public static void main(String[] args)
{
    Scanner input = new Scanner(System.in);
    System.out.println("Na czym najbardziej Ci zależy, grafika, wymagania, fabuła czy rozgrywka");
    String x = input.nextLine();
    if (x.equals("grafika"))
    {
        System.out.println("Jaki rodzaj grafiki chcesz, komiksowa czy realistyczna?");
        //Scanner inputt = new Scanner(System.in); - niepotrzebne
        String z = input.nextLine();

Po trzecie, dopisz po odpowiedzi ostatecznej

System.exit(0);
0

Ja bym dodał: po czwarte ten program nie ma nic wspólnego z drzewem decyzyjnym tylko z copy-pastem co najwyżej. Chciałym zobaczyć to w wersji gdzie pytań jest potencjalnie 1<N<milion, ale podzielonych na różne ścieżki (ale dane pytanie może występować na różnych ścieżkach).

1 użytkowników online, w tym zalogowanych: 0, gości: 1