Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con programa al usar atributo en dos metodos dentro de la misma clase

Estas en el tema de Problema con programa al usar atributo en dos metodos dentro de la misma clase en el foro de Java en Foros del Web. Hola, estoy haciendo un programa para que aleatoriamente retorne uno de tres resultados: left, right o center, en la consola. El programa esta dividido en ...
  #1 (permalink)  
Antiguo 10/05/2009, 19:17
 
Fecha de Ingreso: febrero-2009
Ubicación: Lima, Perú
Mensajes: 19
Antigüedad: 15 años, 2 meses
Puntos: 0
Problema con programa al usar atributo en dos metodos dentro de la misma clase

Hola, estoy haciendo un programa para que aleatoriamente retorne uno de tres resultados: left, right o center, en la consola.

El programa esta dividido en dos clases. La primera es la siguiente:
Código:
public class Player {

	private int direction;
	
	public void shoot() {
		
		direction = (int) (Math.random()*3+1);
		
	}
	

	
	public int shootedDirection() {
		
		switch(direction) {
		
			case 1:
				System.out.println("Left");
				break;
			case 2:
				System.out.println("Center");
				break;
			case 3:
				System.out.println("Right");
				break;
				
		}

		return 0;
		
	}

}
La segunda clase es la siguiente:
Código:
public class Programm {

	public static void main(String[] args) {
		
		Player spieler = new Player();
		
		spieler.shootedDirection();
		
	}
	
}
Al ejecutar la segunda clase, la consola queda en blanco.

He analizado el programa y creo que se cual es el problema, pero como soy nuevo en Java (2 dias aprendiendolo), no se como solucionarlo y por eso acudo a ustedes.

Segun parece, el segundo metodo de la primera clase, al referirse al atributo direction, regresa a la primera declaracion de esa variable, osea el int direction, donde aun direction no tiene un valor verdadero (tiene el valor por defecto, osea 0).

La solucion seria lograr que en el segundo metodo se llame a direction con el nuevo valor, el que recibio tras ejecutarse el primer metodo.

Espero que me hayan entendido y que me puedan ayudar con este pequeño gran problema.

Gracias de antemano, cualquier colaboracion, por mas pequeña que fuese, seria de gran ayuda.
  #2 (permalink)  
Antiguo 10/05/2009, 21:38
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: Problema con programa al usar atributo en dos metodos dentro de la misma c

Primero si quieres usar la función shootedDirection() primero debes llamar a la función shoot() ya que es esta la que le da un valor al atributo direction.

O sino modifica la segunda funcion de esta manera

Código:
	public int shootedDirection() {
		
		switch(direction) {
		
			case 1:
				System.out.println("Left");
				break;
			case 2:
				System.out.println("Center");
				break;
			case 3:
				System.out.println("Right");
				break;
                       default:
                               System.out.prinln("Default");
                               break;
				
		}

		return 0;
		
	}

Para que si el atributo direction no contiene ninguno de los valores de los case, por defecto imprima "Default"
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #3 (permalink)  
Antiguo 11/05/2009, 00:39
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Problema con programa al usar atributo en dos metodos dentro de la misma c

No estás llamando a la función shoot() en ningún lugar, por que lo la variable direction siempre valdra 0.
Lo que deberías hacer es, antes del switch, llamar a shoot().

Por decirlo todo, hacerlo así no se suele recomendar ya que estas llamando a una funcion sin parametros que resulta que te modifica una variable que luego vas a usar, y eso queda muy poco claro. Lo suyo sería que shoot() fuera una funcion y te devolviera directamente el entero aleatorio y tu hicieras "direction = shoot();" y además no necesitarias tener la variable direction como miembro de la clase.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #4 (permalink)  
Antiguo 11/05/2009, 01:21
(Desactivado)
 
Fecha de Ingreso: abril-2009
Mensajes: 113
Antigüedad: 15 años
Puntos: 1
Respuesta: Problema con programa al usar atributo en dos metodos dentro de la misma c

JO! Pues al final te vas a salir con la tuya.
Te van a hacer el programa sin esribir una linea de código.
Y además sin aprender nada de Java, sin entender lo poco que estás heciendo y sin tener interes.

Chaval, Eres un crack!
  #5 (permalink)  
Antiguo 11/05/2009, 03:22
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Problema con programa al usar atributo en dos metodos dentro de la misma c

Al menos pone el código y ha intentado algo, y yo por mi parte no le he escrito nada de código si no que lo tendrá que escribir él.

Algunos mensajes si son así pero este no creo que llegue a lo exagerado que lo pintas.
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #6 (permalink)  
Antiguo 11/05/2009, 05:47
(Desactivado)
 
Fecha de Ingreso: abril-2009
Mensajes: 113
Antigüedad: 15 años
Puntos: 1
Respuesta: Problema con programa al usar atributo en dos metodos dentro de la misma c

Yo creo que lo tiene muy facil ya. Que los métodos se los han pasado (¿Porque una persona que habla español pone los nombres de los métodos en inglés?). Además, si ha podido hacer los métodos... lo que le queda es más sencillo. Si no puede hacer esta ultima parte ¿como puede saber los métodos que necesita?.

Además, si nos pica un poco en el otro mensaje... nosotros tenemos derecho a pincharle a él un poco.. sobre todo porque le ayudamos más requiriendole que aprenda y se esfurce que si le dieramos el programa hecho.

Y no te des por aludido Green, tu se lo explicas mejor, y ya sé que no le has dado el codigo (pero que si se lo dieras me pareceria perfecto, yo no se lo voy a dar).

Por mi parte estoy deseoso de ver como termina el programa. Si supiera lo que hace cada método sabria como "montar" el programa y a que metodo o metodos llamar , aunque no lo haga con un estilo de super programador. Es un ejemplo para aprender lo basico.

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:40.