4 posts
· 5 views
· Last UP: 30/12/2016 01:37
[AIUTO][Java] Metodo void lascia invariato valore variabile
Salve a tutti, ho bisogno di un piccolo aiuto, qualsiasi suggerimento è ben accetto. Sto creando un gioco per l'esame di programmazione dell'università, anche se può sembrare macchinoso in alcuni punti, devo attenermi alle linee guida delle richieste effettuatemi. Il problema di per se credo sia semplice ma non riesco a venirne a capo: un metodo void appartenente ad un'altra classe dovrebbe modificare il valore di una variabile booleana a seconda di un valore random. Fin qui molto semplice: CODICE public class CalòPlayer implements Player { @Override public void start(boolean isFirst) { double random = Math.random()*10; System.out.println(random); if (random <= 5.0){ isFirst = true; System.out.println(isFirst); } else{ isFirst = false; System.out.println(isFirst); } } Come si può vedere, con delle stampe opportunamente fatte durante l'applicazione del metodo, la variabile booleana assume correttamente il valore che deve assumere. Tuttavia appena fuori dall'applicazione del metodo la var booleana ritorna ad avere il valore di default (false) oppure true se per esempio al momento della dichiarazione la eguaglio a true. Segue la parte di codice in cui il metodo viene applicato: CODICE public class GameManager { private boolean isFirst; CalòPlayer dio = new CalòPlayer(); public void gioca (Giocatore g1, Giocatore g2){ System.out.println("Ha inizio la partita!"); dio.start(this.isFirst); System.out.println(isFirst); //Già qui isFirst assume il valore di default g1.colore(isFirst); g2.colore(!isFirst); System.out.println(g1.getColore()); System.out.print(" " + isFirst); } } La classe giocatore ha solo il metodo "colore" al momento che eguaglia il valore "rosso" o "blu" ad una String in base al valore della variabile booleana. CODICE public class Giocatore { private String colore = ""; public Giocatore () { System.out.println("Ho instanziato la classe giocatore"); } public void colore (boolean isFirst){ if (isFirst == true){ this.colore = "rosso"; } else { this.colore = "blu"; } } public String getColore (){ return this.colore; } } Infine il metodo Main: CODICE public class Main { public static void main(String[] args) { GameManager a = new GameManager(); Giocatore g1 = new Giocatore(); Giocatore g2 = new Giocatore(); a.gioca(g1, g2); } } Grazie per qualsiasi aiuto
30/12/16 01:12
0
Sinceramente non ho capito bene cosa stai chiedendo. Come prima cosa, anche se c'entra poco col programma, cerca di chiamare i metodi, variabili e qualsiasi altra cosa senza accenti (tipo Calò). La seconda cosa, che è quella che interessa questo programma, è che se vuoi rendere, diciamo, univoco "isFirst", (e cioè che se modifichi quella variabile booleana in una classe, si modifica in tutte) devi renderla statica (static boolean). In C è così, per lo meno, e anche in C++, qui non so. E comunque non so se è la stessa cosa che stai chiedendo, quindi aspetto un tuo responso. Modificato da ontech7 - 29/12/2016, 23:41
30/12/16 01:27
0
Si la conosco la notazione quando si scrive codice. Solo che come ho detto è una richiesta per un esame universitario in cui sono molto vincolato. Il nome di quella classe deve essere necessariamente essere quello. Detto questo credo di amarti. Non avevo pensato di dichiarare la variabile statica e richiamarla all'interno del metodo start. Grazie davvero
30/12/16 01:37
0
Son contento di averti aiutato, anche non avendo capito perfettamente il problema leggendo di sfuggita col sonno addosso xD Il Java lo stavo studiando questa estate ma ho dovuto fermarmi a causa di inizio universit├á Desidererei riprenderlo appena ho di nuovo tempo. Nel mondo del lavoro Java, Python e C++ sono davvero indispensabili (per quanto riguarda il software engineering) Ti consiglierei anche un professore "fcamuso" che pubblica tutorials ben fatti su youtube riguardo i linguaggi che ti ho appena elencato, ├¿ anche italiano. Ti dico solo che per il C++ ci sono oltre 120 video tutorials che ancora oggi aggiorna. Dopo di ch├®, buona serata, io vado a coricarmi, ├¿ stata una giornata intensa.
Log in to reply to this topic.
Messaggio simile al precedente
Il testo sembra un duplicato o un tentativo di UP. Per far risalire la discussione usa il pulsante UP: mantiene il thread pi├╣ ordinato. Puoi comunque pubblicare il messaggio se lo desideri.
Select message
False or abusive reports are misconduct and may lead to account restrictions and other action by staff.