Boa Tarde pessoal do GUJ. Criei duas classes:
public class Coordenada {
int x, y;
}
e
public class Principal {
public static void main(String[] args) {
List<Coordenada> pto = new ArrayList<Coordenada>();
dir = "112120203";
pto = posicao(dir);
System.out.println("Direções: " + dir);
for (Coordenada it : pto) {
System.out.println(it.x + " " + it.y);
}
}
public static List<Coordenada> posicao (String dir) {
Coordenada newPto = new Coordenada();
Coordenada oldPto = new Coordenada();
List<Coordenada> pto = new ArrayList<Coordenada>();
newPto.x = 0;
newPto.y = 0;
oldPto.x = 0;
oldPto.y = 0;
pto.add(0,newPto);
for (int i = 0; i < dir.length(); i++) {
switch (dir.charAt(i)) {
case '0':
newPto.x = oldPto.x - 1;
newPto.y = oldPto.y;
break;
case '1':
newPto.x = oldPto.x + 1;
newPto.y = oldPto.y;
break;
case '2':
newPto.x = oldPto.x;
newPto.y = oldPto.y + 1;
break;
case '3':
newPto.x = oldPto.x;
newPto.y = oldPto.y - 1;
break;
default:
System.out.println("valor fora dos limites");
}
pto.add(i+1,newPto);
oldPto = newPto;
}
return pto;
}
A classe Principal tem o método [color=red]posicao[/color] que deveria retornar uma lista de coordenadas cartesianas conforme a String dir mas ele simplesmente retorna o último elemento calculado. A String dir contem as direções possiveis em um espaço de duas dimensões:
[list] 0 subtrai uma unidade no eixo X e 1 adiciona uma unidade no eixo X[/list]
[list] 2 adiciona uma unidade no eixo Y e 3 subtrai uma unidade no eixo Y[/list]
Dentro do método [color=red]posicao[/color] consigo exibir as coordenadas calculadas corretamente, mas qdo chamo o metodo na classe Principal ocorre o erro que eu já mencionei.
O erro pode estar no metodo [color=red]posicao[/color] ????
Agradeço a quem puder ajudar.
