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.
Post Reply
User avatar
alurquiza
Posts: 54
Joined: 3 years ago
Gender: Male

Struct en Java

Post by alurquiza » 2 years ago

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: 6 years ago
Location: Las Tunas
Gender: Male

Re: Struct en Java

Post by frankr » 2 years ago

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: 54
Joined: 3 years ago
Gender: Male

Re: Struct en Java

Post by alurquiza » 2 years ago

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: 6 years ago
Gender: Male

Re: Struct en Java

Post by Oreste » 2 years ago

tu error es que te estas refiriendo a una direccion en memoria que no existe:
x.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=new pair();
x.a = 1;
}

User avatar
frankr
Posts: 49
Joined: 6 years ago
Location: Las Tunas
Gender: Male

Re: Struct en Java

Post by frankr » 2 years ago

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;
      }
   }
}

Post Reply

Return to “Java”