da
DarwinNE » 23 mar 2015, 23:13
Se posso permettere di dare un piccolo consiglio, anche se sono un non informatico
Sarebbe meglio scegliere una regola per l'indentazione e seguirla in maniera rigorosissima. Per esempio, oggi va di moda questo stile:
- Codice: Seleziona tutto
import java.util.*;
class Provaarray {
public String aDestra(String d) {
String punti[]={"N","E","S","W"};
String punto="";
int pos=0;
if(d.equals("D")&&pos<punti.length) {
punto=punti[pos];
pos++;
}
return punto;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
Provaarray p=new Provaarray();
System.out.println(p.aDestra("D"));
System.out.println(p.aDestra("D"));
}
}
Se fai così, vedi ad occhio che come indicato giustamente da
ikim, la variabile pos fa parte del blocco interno al metodo aDestra e quindi da brava variabile locale "si dimentica" di quello che è successo quando esci dal blocco.
Volendo, esisterebbe la possibilità di "dare un po' di fosforo" per fare in modo che il valore in pos non venga perduto (sono le variabili dette "statiche"), ma in questo caso sarebbe una pessima soluzione, brutta ed inutile. E' considerata cattiva pratica di programmazione avere funzioni che si "lasciano delle tracce" qua e là.
In gergo, si dice che la funzione ha "effetti collaterali", vedi per esempio qui:
http://it.wikipedia.org/wiki/Effetto_co ... nformatica)
Si rende meno chiaro il flusso dei dati nel programma e lo si rende più difficile da leggere, capire e correggere in caso di problemi.