• Lunes 13 de Mayo de 2024, 03:26

Autor Tema:  Empezando en Java  (Leído 1964 veces)

franZn

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Empezando en Java
« en: Miércoles 21 de Marzo de 2012, 19:15 »
0
Buen día gente, estoy comenzando a programar en java y a modo de prueba para entender un poco mas del lenguaje estoy intentando hacer programitas sencillos como el que les voy a mostrar, pero tengo un problema. La idea del programa crear un arreglo de objetos equipo y cargarle nombres y partidos ganados, pero resulta que al mostrar los datos siempre me muestra los ultimos datos ingresados, les dejo el codigo y espero sus respuestas. Muchas Gracias!!

Código: Java(TM) 2 Platform Standard Edition 5.0
  1. import java.util.*;
  2.  
  3.  
  4. public class Equipo {
  5.  
  6.         public static String nombre;
  7.         public static int wins;
  8.         public int loss;
  9.         public int ties;
  10.         public int pts;
  11.        
  12.        
  13.  
  14.         public void  IngresarEquipo ()
  15.         {
  16.                
  17.         System.out.println("ingrese el nombre del equipo");
  18.         Scanner s = new Scanner(System.in);
  19.         nombre = s.nextLine();
  20.         System.out.println("ingrese partidos ganados");
  21.         wins = Integer.parseInt(s.nextLine());
  22.        
  23.        
  24.        
  25.         }
  26.        
  27.         public void MostrarDatos()
  28.         {
  29.                 System.out.println(nombre);
  30.                 System.out.println(wins);
  31.                
  32.         }
  33.  
  34. }
  35.  
  36.  
  37. public class Torneo extends Equipo {
  38.  
  39.         static Equipo[] Equipos = new Equipo[4];
  40.        
  41.         public static void main(String[] args) {
  42.                 int i=0;
  43.                 int k=0;
  44.                
  45.                 for (i=0;i<=3;i++)
  46.                 {
  47.                 Equipos[i] = new Equipo();
  48.                 Equipos[i].IngresarEquipo();
  49.                 }
  50.                
  51.                 for (k=0;k<=3;k++)
  52.                 {
  53.                 Equipos[k].MostrarDatos();
  54.                 }
  55.                
  56.                
  57.                
  58.  
  59.         }
  60.  
  61. }
  62.  
  63.  
  64.  
  65.  

caperutxa

  • Miembro activo
  • **
  • Mensajes: 40
  • Nacionalidad: 00
    • Ver Perfil
Re:Empezando en Java
« Respuesta #1 en: Jueves 22 de Marzo de 2012, 12:13 »
0
Veo unas cuantas cosas:

Defines un vector equipos y luego instancias un objeto: equipos = new Equipo;
Luego llamas al método para insertar los nombres de los equipos y los insertas dentro de un tipo "static".

Por definición sólo hay una copia en memoria de un tipo "static", por tanto, estas sobreescribiendo constantemente sobre la misma variable. Al llamar al método MostrarDatos imprimes un tipo "static" que sólo contiene un nombre.

Cambia las definiciones de tipos en nombre y win
public String nombre;
public int wins;

Y para llamarlos en los métodos usa el "comodín" this. (los métodos están todos dentro de la misma clase)

this.nombre = s.nextLine();
this.wins = Integer.parseInt(s.nextLine());

System.out.println(this.nombre);
System.out.println(this.wins);

Si quieres obtener resultados diferentes no hagas siempre lo mismo.


franZn

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re:Empezando en Java
« Respuesta #2 en: Jueves 22 de Marzo de 2012, 17:35 »
0
Muchas gracias por tu respuesta. Me sirvio mucho  :yes: