Problema con un programa en java

Hola, estaba haciendo un ejercicio en java y me da un error idiota, ya que me dice que tengo que inicializar una cosa que no se tendria que inicializar, bueno os pongo el cacho donde esta el problema y lo que me dice el compilador que esta mal.


public class examen {
private static inout io=new inout();
static class Resultat{
boolean trobat;
int pos;
}
public static void main(String args[])throws Exception{

int V[]= new int[10];
int W[]= new int[10];
Resultat sol;

io.writeln("introduce los valores para V y W:");
V = io.read_int_array();
W = io.read_int_array();

hihes(V, W,sol);
io.writeln( sol.trobat);

}

public static void hihes(int V[], int W[],Resultat sol){
int i, max,N,M;

max= V[0];
i=1;
N=V.length;

while(i if(V[i] > max)
max=V[i];
i++;
}
i=0;
sol.trobat=false;
M=W.length;
while(!sol.trobat && i {
if(W[i]==max)
sol.trobat=true;
else
i++;
}
sol.pos=i;
}
}



Y esto es lo que me dice el compilador.
javac examen.java
examen.java:17: variable sol might not have been initialized
hihes(V, W,sol);
^
1 error


Segun dice tengo que inicializar sol, pero es una tupla(segun el profe) o struck(si fuera en c) o como le querrais llamar.

Donde esta el fallo??

Gracias por adelantado.
Hace mucho tiempo que no programo y no lo he podido probar porque me falta la clase inout e imagino que la sol tambien, pero creo que simplemente te has dejado el new, es decir donode pone:

Resultat sol;


Creo que deberia de poner

Resultat sol = new sol();


Saludos
Si sol es el nombre de una variable tipo Resultat, entonces es como te ha dicho el compañero solo que poniendo
Resultat sol= new Resultat();

saludines.
Ok, muchas gracias, era eso.

Me pensaba que solo se tenian que inicilizar los vectores y las matrices.

Me gusta mas c que java, pero bueno, es lo que hay.
me parece que estas usando sol como un objeto de otra clase, en java tienes que crear un objeto, o si no quieres crearlo, puedes llamar a los metodos de una clase por su nombre tal cual siempre que esten declarados como estaticos :)

espero no estar liandome XD
demnim escribió:me parece que estas usando sol como un objeto de otra clase, en java tienes que crear un objeto, o si no quieres crearlo, puedes llamar a los metodos de una clase por su nombre tal cual siempre que esten declarados como estaticos :)

espero no estar liandome XD


Te estas liando, sol no es mas que una tupla con un booleano y un entero que indica la posicion donde ha finalizado la busqueda, de hecho no hace ni una llamada a metodos de clase, sino que accede a los elementos de la tupla. Si te fijas la definicion tambien la ha puesto y no tiene metodos de clase (mas que los implicitos).

Saludos
5 respuestas