Foros del Web » Programación para mayores de 30 ;) » Java »

implementar un metodo

Estas en el tema de implementar un metodo en el foro de Java en Foros del Web. Hola buenas escribo para ver si alguien me puede echar una mano en como resolver este problema por favor seria de gran ayuda ya que ...
  #1 (permalink)  
Antiguo 13/05/2012, 15:03
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 12 años
Puntos: 0
implementar un metodo

Hola buenas escribo para ver si alguien me puede echar una mano en como resolver este problema por favor seria de gran ayuda ya que tengo que implementar luego otros parecidos.El caso es que tengo que implementar un metodo en el que dada una fecha pasada como parametro me imprima todas las notas inferiores a esa fecha.Para la fecha nos dijeron que crearamos tres campos int dia,mes,año.
Vale:
public void imprimirNotasAnteriores(int dia,int mes,int año)
{
if(mes < 1 || mes > 12) {
System.out.println("Mes " + mes+
" fuera de rango . " +
"el rango debe ser 1 ... 12");}

if(dia < 1 || dia > 31) {
System.out.println("Dia " + dia+
" fuera de rango . " +
"el rango debe ser 1 ... 12");}



for(Nota nota:notas){
if(nota.getAño()<= año && nota.getMes()<=mes && nota.getDia()<dia){
System.out.println(nota.getTitulo());}



}
De esta manera no funciona cuando lo aplico no aparece nada en pantalla.
De esta manera si me funciona parcialmente pero no esta bien :

/**
* Metodo que dada un fecha imprimi por pantalla las notas creadas anterior a esa fecha.
*
* @param fecha.
*/
public void imprimirNotasAnteriores(int dia,int mes,int año)
{
if(mes < 1 || mes > 12) {
System.out.println("Mes " + mes+
" fuera de rango . " +
"el rango debe ser 1 ... 12");}

if(dia < 1 || dia > 31) {
System.out.println("Dia " + dia+
" fuera de rango . " +
"el rango debe ser 1 ... 12");}



for(Nota nota:notas){
if(((nota.getAño()<= año)&&(nota.getMes()<=mes))){
System.out.println(nota.getTitulo());}



}


}
como puedo meter aqui para que funcione un tercer operador he leido algo sobre(?:)
pero no se
  #2 (permalink)  
Antiguo 14/05/2012, 02:20
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: implementar un metodo

?: no tiene nada que ver con tercera condición, simplemente es otra forma de hacer un if.

Cita:
nota.getAño()<= año && nota.getMes()<=mes && nota.getDia()<dia
Está bien, solo que siempre te buscará días menores al que le pases como parámetro.

Deberías comprobar qué te devuelven los métodos getAño(), etc, y sería de gran ayuda que dijeses qué es lo que hace exactamente la aplicación, no funciona no sirve de mucho.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 14/05/2012, 07:13
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 12 años
Puntos: 0
Respuesta: implementar un metodo

Cita:
Iniciado por Xerelo Ver Mensaje
?: no tiene nada que ver con tercera condición, simplemente es otra forma de hacer un if.



Está bien, solo que siempre te buscará días menores al que le pases como parámetro.

Deberías comprobar qué te devuelven los métodos getAño(), etc, y sería de gran ayuda que dijeses qué es lo que hace exactamente la aplicación, no funciona no sirve de mucho.
Pues devuelven el año el dia y el mes de tipo int la aplicacion es una libreta para almacenar notas si pongo los tres siguidos no me funcion a
  #4 (permalink)  
Antiguo 14/05/2012, 09:32
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: implementar un metodo

Igual no tienes ningún dato que verifique las 3 condiciones :|
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 14/05/2012, 09:39
Avatar de huspy  
Fecha de Ingreso: diciembre-2008
Ubicación: Málaga, España
Mensajes: 120
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: implementar un metodo

Esa comprobación deberías hacerla con un Date y no con cada dato por separado... Ya que puede que el año sea menor al año de los argumentos, pero el mes si después compruebas el mes y este es mayor al mes de la nota aunque en realidad sea menor ya que pertenece a un año menor... lo explico más graficamente....

Si tienes la siguientes notas:

NOTA1 -> 12/2/1983
NOTA2 -> 11/12/1994
NOTA3 -> 12/08/2012

Y en la llamada al método la haces así

Código Java:
Ver original
  1. imprimirNotasAnteriores(14, 5, 2012);

SOLO se te imprimirá la primera fecha (12/2/1983), ya que el año es menos, pero el mes ES MAYORRRR!!

Por lo tanto yo te recomiendo que esto lo hagas con Date o hagas otra comprobación más fea del estilo....

Código Java:
Ver original
  1. if ((notas[i].anyo < anyo) || (notas[i].anyo == anyo && notas[i].mes < mes) || (notas[i].anyo == anyo && notas[i].mes == mes && notas[i].dia < dia)) {
  2.     System.out.println("NOTA del día: " + notas[i]);
  3. }

Espero te sirva!

Saludos!
__________________
"Lo escuché y lo olvidé, lo vi y lo entendí, lo hice y lo aprendí." (Confucio)
  #6 (permalink)  
Antiguo 14/05/2012, 10:28
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 12 años
Puntos: 0
Respuesta: implementar un metodo

Cita:
Iniciado por huspy Ver Mensaje
Esa comprobación deberías hacerla con un Date y no con cada dato por separado... Ya que puede que el año sea menor al año de los argumentos, pero el mes si después compruebas el mes y este es mayor al mes de la nota aunque en realidad sea menor ya que pertenece a un año menor... lo explico más graficamente....

Si tienes la siguientes notas:

NOTA1 -> 12/2/1983
NOTA2 -> 11/12/1994
NOTA3 -> 12/08/2012

Y en la llamada al método la haces así

Código Java:
Ver original
  1. imprimirNotasAnteriores(14, 5, 2012);

SOLO se te imprimirá la primera fecha (12/2/1983), ya que el año es menos, pero el mes ES MAYORRRR!!

Por lo tanto yo te recomiendo que esto lo hagas con Date o hagas otra comprobación más fea del estilo....

Código Java:
Ver original
  1. if ((notas[i].anyo < anyo) || (notas[i].anyo == anyo && notas[i].mes < mes) || (notas[i].anyo == anyo && notas[i].mes == mes && notas[i].dia < dia)) {
  2.     System.out.println("NOTA del día: " + notas[i]);
  3. }

Espero te sirva!

Saludos!
oye pues el caso es que me funciona de esta manera pero no entideno como evalua esto me lo puedes explicar esque estoy leyendo este operador(||)devuelve verdadero si el primero operando es verdadero si no devuelve lo que valga el segundo pero con tanta cosa no se como sigue el orden me lo puedes explicar por favor
if(((nota.getAño() < año) || (nota.getAño() == año && nota.getMes() < mes) || (nota.getAño() == año &&nota.getMes() == mes && nota.getDia() < dia))) {
System.out.println(nota.getTitulo());}
  #7 (permalink)  
Antiguo 16/05/2012, 03:02
Avatar de huspy  
Fecha de Ingreso: diciembre-2008
Ubicación: Málaga, España
Mensajes: 120
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: implementar un metodo

Cita:
Iniciado por pipelojones Ver Mensaje
oye pues el caso es que me funciona de esta manera pero no entideno como evalua esto me lo puedes explicar esque estoy leyendo este operador(||)devuelve verdadero si el primero operando es verdadero si no devuelve lo que valga el segundo pero con tanta cosa no se como sigue el orden me lo puedes explicar por favor
if(((nota.getAño() < año) || (nota.getAño() == año && nota.getMes() < mes) || (nota.getAño() == año &&nota.getMes() == mes && nota.getDia() < dia))) {
System.out.println(nota.getTitulo());}
Buenas!

Pues primero comprueba si el año es menor que el pasado en argumento:

Código Java:
Ver original
  1. (nota.getAño() < año)

Si no es así es que el año es igual o mayor y pasa al siguiente para comprueba si el año es igual al pasado y el mes es menor al pasado en el argumento...

Código Java:
Ver original
  1. (nota.getAño() == año && nota.getMes() < mes)

Si no es así es que el o el año es mayor o el menos es mayor o igual al pasado entoces pasa a la siguiente comprobación... Que compruba si el año y mes son iguales y además si el día es menor al pasado en el argumento.

Código Java:
Ver original
  1. (nota.getAño() == año &&nota.getMes() == mes && nota.getDia() < dia)

Sólo eso....

Saludos!
__________________
"Lo escuché y lo olvidé, lo vi y lo entendí, lo hice y lo aprendí." (Confucio)
  #8 (permalink)  
Antiguo 16/05/2012, 03:52
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 4 meses
Puntos: 41
Respuesta: implementar un metodo

Sin ningún animo de ofender pipelojones, es solo curiosidad la pregunta.
¿Cómo alguien que no conocés los operadores lógicos básico OR , AND puede estar programando (te salteaste todo el 1er semestre de la carrera)?

y eso a lo que te referís como "tercer operador" se llama TERNARIA, y se utiliza así:

Código Java:
Ver original
  1. String respuesta = a > b?  "a es mayor" : "b es mayor";
  2. //otro tipo de retorno
  3. int respuesta = a > b?  a : b;

es una forma rápida y abreviada de esto:
Código Java:
Ver original
  1. String result;
  2. if (a > b) {
  3.     result = "a es mayor";
  4. } else {
  5.     result = "b es mayor, no .. en serio? no me digas..";
  6. }
__________________
BadProgrammerException!

Última edición por FiruzzZ; 16/05/2012 a las 06:00

Etiquetas: implementar, metodo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:19.