Java - duda con programa

   
Vista:

duda con programa

Publicado por eduardo (49 intervenciones) el 29/10/2008 00:29:10
Tengo esta clase en un archivo .class

public class Pedido {
public int cpedida;
public int tiempo;
public int pedido(){
tiempo =(int) (Math.random()*14+1);
cpedida=(int) (Math.random()*17+3);
return tiempo;
}
}

tengo otro programa ,el cual es el programa principal :
el codigo es:

public class principal {

public static void main(String[] args) {


Pedido p=new Pedido();
System.out.println(p.cpedida+" "+p.tiempo);

}

}

Tengo dos dudas:
como tengo que hacer paar que el constructor de la clase pedido me devuelva
el valor de la variable tiempo y cpedida?

cuando ejecuto principal ,me devuelve la variable tiempo con valor 0,cuando segun lo que puse ,creo que deberia generar un valor .

Necesitaria saber donde tengo los errores.

gracias por la ayuda!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:duda con programa

Publicado por Gerardo Aquino (62 intervenciones) el 29/10/2008 03:37:00
Hay un problema en realidad, la cosa es que el random te retorna un número vastante pequeño, a tal manera que cuando lo multiplicas te dá un numero ,menor a 1, cuando lo pasas a tipo Integer estas tomando el valor entero del numero, es decir que si conviertes 0.23342 a entero te va a retornar 0, lo mismo que si lo aplicas para 0.9999999, el casting no te redondea ningun numero, ahora lo que te sugiero es que lo multipliques por 100, asi, de esta manera, para el numero 0.23342, al multiplicarlo por 100, tendrias 23.342 y cuando lo conviertas a Integer tendiras 23

Espero te funcione, saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:duda con programa

Publicado por dsadsa (1 intervención) el 29/10/2008 19:38:20
COLOCA cpedido y tiempo como variables de tipo double......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:duda con programa

Publicado por eduardo (49 intervenciones) el 30/10/2008 00:32:09
gracias por las respuestas,pero probe de poner las variables asi:

public class Pedido {
public double cpedida;
public double tiempo;

public double pedido(){
tiempo = (Math.random()*14+1);
cpedida= (Math.random()*17+3);
return tiempo;
}


}
y cuando ejecuto el programa principal me muestra 0.0 como salida de la var tiempo

public class principal {

public static void main(String[] args) {


int c=98,d=76;
double a=10.9,b=20.7;
Surtidor s=new Surtidor(a,b,c,d);
Pedido p=new Pedido();
System.out.println("objeto creado");
System.out.println(s.cantsurt+" "+s.cantanque+" "+s.cantintanque+" "+s.captanque);
System.out.println(p.cpedida+" "+p.tiempo);

}

}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:duda con programa

Publicado por Gerardo Aquino (62 intervenciones) el 30/10/2008 06:08:51
Pues en este código que escribes puedo decirte que nunca se van a inicializar las variables, seguramente queisiste usar el metodo contructor de la clase, si es asi, lo hiciste mal, el metodo contructor debe llamarse tal cual se llama la clase, es decir, si tu clase se llama Pedido, por ende el metodo contructor también se debe llamar Pedido (notesen las mayusculas y minusculas, de esa forma estas garantizando que se ejecute ese código que está en el bloque del constructor, otra cosa que no debes olvidar es que el constructor no debe ser de ningun tipo, yo no sé por que le pusiste el tipo double, en todo caso debiste haber hecho un metodo double por cada variable y que te retorne su valor inicializado

un constructor bien hecho para una clase de nombre Principal es:

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

public class Pedido {
public double cpedida;
public double tiempo;

public Pedido(){
tiempo = (Math.random()*14+1);
cpedida= (Math.random()*17+3);
}


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

de esa forma cuando realices una nueva instancia de la clase Pedido, las variables automaticamente toman el valor que sel pones en su constructor (puedes tener un número ilimitado de constructores por clase siempre y cuando los parametros sean diferentes)

Espero te pueda servir esto, saludos bye!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar