Passare variabili in metodi consecutivi

di il
10 risposte

Passare variabili in metodi consecutivi

Ciao ragazzi, sono nuovo del forum perciò non so se la sezione è giusta ma soprattutto se l'argomento è gia stato trattato.
Sto creando una scacchiera (senza interfaccia grafica) e mi sono imbattutto in un errore che non riesco risolvere. In poche parole dovrei passare le variabili cordinate[][] dal main al metodo verificàEffettuabilitàMossa nella classe Scacchiera. A questo punto se la mossa è possibile invoca il metodo move() nella classe Pezzo. il problema è che le variabili si fermano nel metodo verificaEffettuabilitàMossa() e mi da errore se le passo all'altro metodo.
vi posto un pezzo di codice per farvi un idea:
public static void verificaMossa(int[] cordinatePezzoTo,int[] cordiatePezzoFrom, String colore){

if (Pezzi.colore == "bianco"){

switch(stato[cordinatePezzoTo[0]][cordinatePezzoTo[1]]){

case 't': Pezzi.move ();
case 'c': Pezzi.move();
case 'a': Pezzi.move();
case 'k': Pezzi.move();
case 'q': Pezzi.move();
case 'p': Pezzi.move();
case '-': Pezzi.move();
default: System.out.println("mossa non valida.");

}
}
if (Pezzi.colore == "nero"){

switch(stato[cordinatePezzoTo[0]][cordinatePezzoTo[1]]){

case 'T': Pezzi.move();
case 'C': Pezzi.move();
case 'A': Pezzi.move();
case 'K': Pezzi.move();
case 'Q': Pezzi.move();
case 'P': Pezzi.move();
case '-': Pezzi.move();
default: System.out.println("mossa non valida");

}

}

/////////////////////////// secondo metodo utilizzato
public static void move(){

Scacchiera.stato[cordinatePezzoTo[0]][cordinatePezzoTo[1]] = Scacchiera.stato[cordinatePezzoFrom[0]][cordinatePezzoFrom[1]];
}

Grazie a chi saprà aiutarmi in anticipo

10 Risposte

  • Re: Passare variabili in metodi consecutivi

    Le stringhe non si confrontano con "=="
    c'è il metodo equals(anotherString) o equalsIgnoreCase(anotherString)
    Quindi nel tuo caso:
    if(Pezzi.colore.equalsIgnoreCase("bianco")) {
    ...
    }

    Ciao.
  • Re: Passare variabili in metodi consecutivi

    Ciao,
    forse ho capito male la domanda...ù
    Tu dovresti usare le varibili coordinatePezzoTo e coordinatePezzoFrom su move() ma non riesci???
    Perchè se è così devi passarle come parametro anche al metodo move altrimenti la visibilità delle variabili si ferma all'interno del metodo che le riceve/dichiara, cioè verificaMossa( ... )
  • Re: Passare variabili in metodi consecutivi

    Si si scusatemi ma ho incollato il codice che avevo modificato percio non compaiono come argomento del metodo ma anche inserendole non cambia la situazione. Ho pensato che forse potrebbe essere l'if o lo switch ma lo escluso....grazie schumy2000 per il consiglio!
  • Re: Passare variabili in metodi consecutivi

    Figurati, ma mi raccomando cambia il metodo di eguaglianza altrimenti non ti funzionerà mai, per il tuo problema, dividi il move in passaggi più elementari e fai un debug, per capire dove il programma si intrippa.
    Ciao
  • Re: Passare variabili in metodi consecutivi

    Il problema è che di debug non ne ho mai fatto mezzo e dividendo il move in più passaggi funziona ma la domanda resta comunque. Non è possibile che sia dovuto all' if o allo switch ?
  • Re: Passare variabili in metodi consecutivi

    Tia(); ha scritto:


    Il problema è che di debug non ne ho mai fatto mezzo e dividendo il move in più passaggi funziona ma la domanda resta comunque. Non è possibile che sia dovuto all' if o allo switch ?
    Potresti postare il codice che attualmente stai tentado di eseguire?
    Magari utilizza l'editor avanzato per rispondere e includi il codice all'interno del blocco "
    " (senza virgolette) per permetterci di leggere meglio il codice.

    Ciao
  • Re: Passare variabili in metodi consecutivi

    Male.
    Bisogna imparare a fare debug, altrimenti in programmi più avanzati farai difficoltà a capire dove si sbaglia.
    Non so che editor stai usando, io solitamente uso Eclipse è intuitivo e mi trovo bene anche per fare debug.
  • Re: Passare variabili in metodi consecutivi

    Tra l'altro se stai usando lo switch come nel codice postato all'inizio, dovresti riguardarti come usare il costrutto: senza la clausola break infatti non appeni entri in un "case", entrerai anche in tutti i successivi.
  • Re: Passare variabili in metodi consecutivi

    Quindi ansharja invoca più e più volte il metodo move()...ok grazie mille anche per questo comunque stasera appena posso posto il codice che sto utilizzando con l'editor avanzato. Schumy2000 se sai consigliarmi una buona guida dove imparare a fare il debug dei programmi con eclisse sarò lieto di leggerla!
  • Re: Passare variabili in metodi consecutivi

    Tia(); ha scritto:


    Quindi ansharja invoca più e più volte il metodo move()...ok grazie mille anche per questo comunque stasera appena posso posto il codice che sto utilizzando con l'editor avanzato. Schumy2000 se sai consigliarmi una buona guida dove imparare a fare il debug dei programmi con eclisse sarò lieto di leggerla!

    Si in realtà il codice dello switch potresti trasformarlo cosi:
    
    case 't':
    case 'c':
    case 'a':
    case 'k':
    case 'q':
    case 'p':
    case '-': { // le parentesi sono opzionali ma io preferisco metterle per chiarezza di codice
    	Pezzi.move();
    	break;
    }
    default:
    	 ...
    
    
Devi accedere o registrarti per scrivere nel forum
10 risposte