Struct en Java
Struct en Java
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.
Re: Struct en Java
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..
Re: Struct en Java
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;
}
}
}
Re: Struct en Java
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;
}
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;
}
Re: Struct en Java
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;
}
}
}