Ciao a tutti,
ho iniziato da poco a studiare il Java. Il libro che sto usando spiega bene i concetti più che la pratica in sè, e consiglia di provare da soli a progettare un programma e scrivere un codice. Ho pensato di fare una piccola avventura testuale. Sono riuscito a fare senza errori il primo passo, cioè quello di avere delle stanze e di potermi muovere tra esse. Ho costruito due classi per farlo, Stanza e Gioco. Ne ho aggiunta una terza Porta, per avere delle uscite bloccate, ma qui ho avuto i primi errori. Chiedo a voi come mai.
codice:import java.util.Scanner; public class Stanza { private String dir; private Scanner s; private Stanza[] usciteStanza; private String Descrizione; private Boolean[] usciteChiuse; private Porta porta; private String[] porteChiuse; private Boolean statoPorta; //Le stanze adiacenti possibili public void setUscite(Stanza uscite[]){ this.usciteStanza = uscite; } public Stanza[] getUscite(){ return usciteStanza; } //Richiesta di una direzione in input public Scanner getDirezione(){ System.out.println("Dove vorresti muoverti?"); Scanner s = new Scanner(System.in); return s; } //Controllo la direzione inserita. public void miMuovo(Scanner s){ dir = s.nextLine(); String[] comeSiApre = this.getPorteChiuse(); switch(dir){ case "n": if (usciteChiuse[0]==true){ statoPorta = porta.Aprimi(comeSiApre[0]); } Stanza Stanza1 = usciteStanza[0]; Stanza1.getUscite(); Stanza1.getDescrizione(); s = Stanza1.getDirezione(); Stanza1.miMuovo(s); break; case "s": Stanza Stanza2 = usciteStanza[1]; Stanza2.getUscite(); Stanza2.getDescrizione(); s = Stanza2.getDirezione(); Stanza2.miMuovo(s); break; case "o": Stanza Stanza3 = usciteStanza[2]; Stanza3.getUscite(); Stanza3.getDescrizione(); s = Stanza3.getDirezione(); Stanza3.miMuovo(s); break; case "e": Stanza Stanza4 = usciteStanza[3]; Stanza4.getUscite(); Stanza4.getDescrizione(); s = Stanza4.getDirezione(); Stanza4.miMuovo(s); break; } } //La descrizione della stanza. public String setDescrizione(String Descrizione){ return this.Descrizione = Descrizione; } public void getDescrizione(){ System.out.println(Descrizione); } public Boolean[] getUsciteChiuse() { return usciteChiuse; } public void setUsciteChiuse(Boolean[] usciteChiuse) { this.usciteChiuse = usciteChiuse; } public String[] getPorteChiuse() { return porteChiuse; } public void setPorteChiuse(String[] porteChiuse) { this.porteChiuse = porteChiuse; } }codice:import java.util.Scanner; public class Gioco { public static void main(String[] args){ Stanza Terreno1 = new Stanza(); Stanza Terreno2 = new Stanza(); Stanza Terreno3 = new Stanza(); Stanza[] Terreno1Uscite = {Terreno2,Terreno3}; //Stanze adiacenti alla stanza Stanza[] Terreno2Uscite = {Terreno3,Terreno1}; Stanza[] Terreno3Uscite = {Terreno1,Terreno2}; Terreno1.setUscite(Terreno1Uscite); Terreno2.setUscite(Terreno2Uscite); Terreno3.setUscite(Terreno3Uscite); Terreno1.setDescrizione("Bevenuto nel Terreno1"); Terreno2.setDescrizione("Bevenuto nel Terreno2"); Terreno3.setDescrizione("Benvenuto nel Terreno3"); Terreno1.getDescrizione(); String[] Terreno1PorteChiuse = {"codice","codice"}; //Come si aprono le porte nelle varie direzioni Terreno1.setPorteChiuse(Terreno1PorteChiuse); Boolean[] Terreno1UsciteChiuse = {true,true}; //Quali direzioni sono chiuse Terreno1.setUsciteChiuse(Terreno1UsciteChiuse); Scanner dir = Terreno1.getDirezione(); //prendo la prima direzione Terreno1.miMuovo(dir); } }E restituisce questo messaggio di errore:codice:import java.util.Scanner; public class Porta { private String s; public Boolean Aprimi(String s){ System.out.println("La porta è chiusa"); switch(s){ case "codice": System.out.println("Serve un codice per aprirla!"); Scanner stringaInserita = this.getInput(); String codiceInserito = stringaInserita.nextLine(); if (codiceInserito=="1234"){ return true; } } return false; } private Scanner getInput(){ System.out.println("Dimmi come"); Scanner inputInserito = new Scanner(System.in); return inputInserito; } }
Exception in thread "main" java.lang.NullPointerException
at Stanza.miMuovo(Stanza.java:35)
at Stanza.miMuovo(Stanza.java:55)
at Stanza.miMuovo(Stanza.java:55)
at Gioco.main(Gioco.java:22)
Quando inserisco come input "n".
Chi mi può aiutare?

Rispondi quotando
