Struct en Java

Discussion on Java at the COJ. This is the place to clear your doubts about these languages, and to share with the community the new things you learn about them.
User avatar
alurquiza
Posts: 55
Joined: Mon Jun 22, 2015 3:47 pm
Gender: Male

Struct en Java

Postby alurquiza » Tue Jun 14, 2016 8:26 am

Como puedo en Java declarar un arreglo de una class que contiene un par.
Last edited by alurquiza on Wed Jun 15, 2016 10:36 pm, edited 1 time in total.



User avatar
frankr
Posts: 49
Joined: Fri Nov 18, 2011 8:09 pm
Location: Las Tunas
Gender: Male

Re: Struct en Java

Postby frankr » Fri Jun 17, 2016 11:21 pm

Code: Select all

class Par{
     Object x, y; //en vez de Object puedes poner el tipo que necesites
     //constructor por defecto
     //otros constructores
     //getters and setters
}

//Luego:
Par A[] = new Par[MAXN]; //Par[0], Par[1], .., Par[MAXN - 1]
//esto llamaría al constructor por defecto MAXN veces, creo q en java el constructor por defecto se invoca de manera implícita aunque no se declare y este llama al de la clase padre..

User avatar
alurquiza
Posts: 55
Joined: Mon Jun 22, 2015 3:47 pm
Gender: Male

Re: Struct en Java

Postby alurquiza » Sat Jun 18, 2016 8:28 am

Este codigo me da NullException para cualquier N en la entrada, como lo arreglo.

Code: Select all

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class test {
   static public class pair{
      int a,b;
      
      pair(){
         a = b = 0;
      }
   }
   
   static pair x[];

   public static void main(String []args) throws NumberFormatException, IOException{
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
      
      int N = Integer.parseInt(in.readLine());
      
      x = new pair[N + 1];
      
      for(int i = 1;i <= N;i++){
         x[i].a = 1;
      }
   }
}

User avatar
Oreste
Posts: 8
Joined: Thu Nov 17, 2011 8:39 pm
Gender: Male

Re: Struct en Java

Postby Oreste » Sat Jun 18, 2016 4:34 pm

tu error es que te estas refiriendo a una direccion en memoria que no existe:
x[i].a = 1;
a diferencia de C++ en java debes primero crear la clase para luego poder acceder a ella:
for(int i = 1;i <= N;i++){
x[i]=new pair();
x[i].a = 1;
}

User avatar
frankr
Posts: 49
Joined: Fri Nov 18, 2011 8:09 pm
Location: Las Tunas
Gender: Male

Re: Struct en Java

Postby frankr » Sat Jun 18, 2016 9:28 pm

Code: Select all

class Par{ //Saqué la clase, aunq me parece no influye
      public int a, b; //mejor poner explícitamente públicos los miembros
     
      public Par(){ //y el constructor también público
         a = b = 0;
      }
}

public class JavaApplication1 {
   public static void main(String []args) throws NumberFormatException, IOException{
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
     
      int N = Integer.parseInt(in.readLine());
     
      Par[] x = new Par[N + 1];
      //No se porque en este punto x es solo un arreglo N + 1 valores iguales
      //a null, por eso lanza NullPointerException mas abajo cuando intentas
      //modificarlo
     
      for(int i = 1;i <= N;i++){
         x[i] = new Par(); //Como x[i] es null debes reservar memoria para
         //cada elemento del arreglo antes de usarlo.
         x[i].a = i;
      }
   }
}


Return to “Java”

Who is online

Users browsing this forum: No registered users and 1 guest