[java]incrementare le posizioni dell'array con if

di il
1 risposte

[java]incrementare le posizioni dell'array con if

Ciao sto provando ad implementare una classe robot le cui istanze siano robot caratterizzati dall'essere accesi o spenti, da una coppia di interi che specifica le coordinate della loro posizione sul piano cartesiano e da un char che indica la direzione di marcia (N, E, S, W).
La mia implementazione è:

class Robot{
int x;
int y;
boolean acsp;
	String punti[]={"N","E","S","W"};
int pos;

Robot(int x,int y){
	this.x=x;
	this.y=y;
	acsp=true;
pos=0;
}
Robot(){
	this(0,0);
}
public boolean accendi(){
	return acsp=true;
}
public boolean spegni(){
	return acsp=false;
}
public void avanti(int coordinata1){
	if(accendi()){
	y=coordinata1;
}
}
/**aDestra
	fa ruotare eventualmente il robot di 90 gradi in senso orario, 
        modificando la direzione di marcia*/
public String aDestra(){
	String punto="";
	if(accendi()||spegni()){
		punto=punti[pos];
		pos++;
}
	return punto;
}
public String toString(){
	String s="";
	if(acsp){
	s+="robot acceso in ("+x +","+y+") verso "+aDestra();
	}else
	s+="il robot è spento in ("+x +","+y+") verso "+aDestra();

	return s;
}	
}
Il mio problema è il metodo aDestra();ogni volta che invoco da main aDestra(),il mio programma dovrebbe scorrere di una posizione nell'array punti.
da main:

import java.util.*;
 class VerificaRobot{
public static void main(String[] args) {

Robot r=new Robot(0,0);
r.aDestra();
System.out.println(r.toString());
r.aDestra();
System.out.println(r.toString());
 }
}
il punto è che da teminale il programma mi dovrebbe stampare :
robot acceso in (0,0) verso N
robot acceso in (0,0) verso E
invece mi stampa:
robot acceso in (0,0) verso E
robot acceso in (0,0) verso W
Quindi in parole povere...perchè da terminale il programma mi stampa i punti a distanza di due posizioni?come faccio a stampare ad incrementare la posizione dell'array utilizzando solo un ciclo if?

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte