Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    [java]operatori di incremento e decremento

    Ciao ho un problemino sugli oparatori di incremento e di decremento.Questo è un esercizio che mi sono inventato di sana pianta..infatti non ha alcun senso logico...comunque il problema è:dato un array,composto dalle stringhe "E","S","O",stampa con il metodo adestra() le tre stringhe e con il metodo asinistra() la stringa "S" usando l'operatore di decremento.
    La mia soluzione è:

    codice:
    class Provap{
    String [] d={"E","S","O"};
    String f="N";
    int pos=0;
    Provap(){
    }
    public String adestra(){
    f=d[pos];
    pos++;
    return f;
    }
    public String asinistra(){
    --pos;
    f=d[pos];
    return f;
    }
    public static void main(String[] args){
    Provap p=new Provap();
    System.out.println(p.adestra());
    System.out.println(p.adestra());
    System.out.println(p.adestra());
    System.out.println(p.asinistra());
    }
    }
    Il metodo a destra() viene tutto correttamente..il problema sta nel metodo asinistra() che stampa O,al posto di S.Invocando per 3 volte adestra() pos dovrebbe essere 2..quindi quando faccio --pos la posizione dell'array dovrebbe spostarsi ad 1.Perchè mi stampa O?
    Ultima modifica di el92; 07-05-2015 a 11:29

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da el92 Visualizza il messaggio
    Il metodo a destra() viene tutto correttamente..il problema sta nel metodo asinistra() che stampa O,al posto di S.Invocando per 3 volte adestra() pos dovrebbe essere 2..quindi quando faccio --pos la posizione dell'array dovrebbe spostarsi ad 1.Perchè mi stampa O?
    Il primo adestra() prende e restituisce d[0] ("E") poi porta pos a 1
    Il secondo adestra() prende e restituisce d[1] ("S") poi porta pos a 2
    Il terzo adestra() prende e restituisce d[2] ("O") poi porta pos a 3 (3 è fuori dall'array!)
    Il successivo asinistra() porta pos a 2 e prende e restituisce d[2] ("O")
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    Ciao grazie per la risposta...sei stato gentilissimo finalmete ho capito dove sbagliavo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.