Variável não se Altera

Olá pessoal.

No meu código, coloquei no construtor:

static int count = 1;

E no final do meu código, coloquei um tipo de “loop”:

if(count == 1) { walking_function(2); count ++; } if (count == 2){ walking_function(1); count --; }

e a função walking_function dá um print com o valor de count, e vai para a função onde está estes IFs.
O problema, é que o programa faz os ifs corretamente uma vez, e depois sempre vai para “walking_function(2)”, em vez de fazer uma vez “walking_function(1) e (2)”.

Como proceder?
Se não estou claro, avise-me que editarei este post.

Obrigado,
Mijuaho.

http://www.guj.com.br/article.show.logic?id=121

http://www.arquivodecodigos.net/dicas/java-as-instrucoes-if-e-if-else-do-java-1232.html

Boa leitura :stuck_out_tongue:

Muito obrigado pelos links!

Mas me dá uma mãozinha aí:

Deixei o construtor como:

public static int count = 1;

E os ifs:

if(count == 1) { walking_function(2); count ++; } else if (count == 2){ walking_function(1); count --; }

E as funções já estão todas “static”.

Mas o programa continua fazendo assim:
Printa 2.
Printa 1.
Printa 1.
Printa 1.
E fica só printando “1”.

O que estou fazendo de errado?

Obrigado,
Mijuaho.

Declarou uma variável estática no construtor dela?! Tem certeza?

Para facilitar, coloca o código por completo. Até mais!

[code]import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class bot_cmds {
public static int count = 1;
public static void walking_function(int working) throws AWTException, IOException{
if(working == 1) {

		   Properties p = new Properties();
			p.load(new FileInputStream("bot_configuration.ini")); 			    

		   Robot robozinho = new Robot();
		   robozinho.delay(3500);
		   try {Thread.sleep(1000);}
	        catch (InterruptedException e) { }
	     
	        robozinho.keyPress(KeyEvent.VK_S);  // Start Walking Action
				            robozinho.delay(5000);
				   robozinho.keyRelease(KeyEvent.VK_S); 
				   String direction = "S";
				   System.out.println("\n -  Andando na direcao: " + direction);
				   print_value(1);
				  
					   }
	   
	   if(working == 2) {
		   
		   Robot robozinho = new Robot();
	        robozinho.keyPress(KeyEvent.VK_W);  // Start Walking Action
				            robozinho.delay(5000);
				   robozinho.keyRelease(KeyEvent.VK_W); 
				   String direction = "W";
				   System.out.println("\n -  Andando na direcao: " + direction);
				   print_value(1);
		   
	   }
					   
} // End Function

public static void print_value(int valor) {
if(valor == 1)
{
if(count == 1) {
walking_function(2);
count ++;
}
else if (count == 2){
walking_function(1);
count --;
}

	}
	
	}
							} // Chave da função
	







																			} // Não mexer nessa chave!

[/code]

Mas a saída fica:

“Andando na direção S”.
“Andando na direção W”.
E aí fica só no:
“Andando na direção W”.

OBS: Na classe onde está o main, só tem um código que chama a walking_function(1).

Tu nao postaste o codigo completo amigo, falta o metodo heal_n_attack(1) e como vc esta invocando esta clase e o metodo print_value.

[]s

De preferência… crie apenas 1 objeto Robot e trabalhe com ele posteriormente no método walking_function. Não sei se é o seu objetivo trabalhar com 2 robôs.Mas, se for, pelo menos mude o nome do segundo. :wink:

Ok.
Editei o post.

Para invocar a classe eu estou usando “bot_cmds.walking_function(1);”

E eu vou trabalhar com dois robôs, hehe.
Melhor mudar o nome…

[i]Tu nao postaste o codigo completo amigo, falta o metodo heal_n_attack(1) e como vc esta invocando esta clase e o metodo print_value.

[]s [/i]

Este é o código completo.
No outro arquivo .java, dentro do main tem bot_cmds.walking_function(1);
E só.

O “heal_n_attack(1)” era pra ser “print_value(1)”. Hehe. Nem notei. (fui alterando o código pelo fórum mesmo, corrigindo alguns erros).