elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  ayuda con codigo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con codigo  (Leído 4,172 veces)
andaluz


Desconectado Desconectado

Mensajes: 333



Ver Perfil
ayuda con codigo
« en: 11 Mayo 2010, 18:49 pm »

hola a todos, he realizado un programa que me analice una fecha introducida por teclado separada por ":", la cual me tiene que decir al introducirle una fecha:
   - si la fecha es valida.
   - me indicara en la estacion del año estamos.

aqui va el codigo:

Código
  1. package ejer_repaso2;
  2. import java.io.*;
  3. public class Main
  4. {
  5.  
  6.    public static void main(String[] args)
  7.    {
  8.        InputStreamReader isr;
  9.        BufferedReader br;
  10.  
  11.        isr=new InputStreamReader(System.in);
  12.        br=new BufferedReader(isr);
  13.        String fecha;
  14.        String trozos[];
  15.        int dia,mes,año;
  16.        boolean enc;
  17.  
  18.        int i=0;
  19.        int d=0;
  20.        enc=false;
  21.        int m=0;
  22.  
  23.        try
  24.        {
  25.            System.out.println("Introduce la fechaa: ");
  26.            fecha=br.readLine();
  27.            trozos=fecha.split(":");
  28.  
  29.            while(i<trozos.length)
  30.            {
  31.                if(EsNum(trozos[i]))
  32.                {
  33.                    enc=true;
  34.                }
  35.                else
  36.                {
  37.                    i++;
  38.                }
  39.            }
  40.            dia=Integer.parseInt(trozos[0]);
  41.            mes=Integer.parseInt(trozos[1]);
  42.            año=Integer.parseInt(trozos[2]);
  43.  
  44.            if(año>1999 && año<3000)
  45.            {
  46.                if(mes>0 && mes<13)
  47.                {
  48.                    if(((mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) ||
  49.                        (mes==4 || mes==6 || mes==9 || mes==11) && d>=1 && d<=30) || (m==2 && d>=1 && d<=28))
  50.                    {
  51.                        System.out.println("Fecha valida");
  52.                    }
  53.                    else
  54.                    {
  55.                        System.out.println("Fecha no valida");
  56.                    }
  57.                }
  58.                else
  59.                {
  60.                    System.out.println("Fecha no valida");
  61.                }
  62.            }
  63.            else
  64.            {
  65.                System.out.println("Fecha no valida");
  66.            }
  67.            /*
  68.              *estaciones
  69.              * primavera[21/03] asta (21/06)
  70.              * verano [21/06] asta (21/09)
  71.              * otonio [21/09] asta (21/12)
  72.              * invierno [21/12] asta (21/03)
  73.             */
  74.            if(((mes==3 && d>=3) || (mes==4 && d>=1 && mes==4 && d>=30) ||
  75.                (mes==5 && d>=1 && mes==5 && d>=31) || (mes==6 && d>=1 && mes==6 && d>21)))
  76.            {
  77.                System.out.println("Es Primavera");
  78.            }
  79.            else
  80.            {
  81.                if(((mes==6 && d>=21) || (mes==7 && d>=1 && mes==7 &&d>=31) ||
  82.                    (mes==8 && d>=1 && mes==8 && d>=31) || (mes==9 && d>=1 && m==9 && d>21)))
  83.                {
  84.                    System.out.println("Es Verano");
  85.                }
  86.                else
  87.                {
  88.                    if(((mes==9 && d>=21) || (mes==10 && d>=1 && mes==10 &&d>=31) ||
  89.                        (mes==11 && d>=1 && mes==11 && d>=31) || (mes==12 && d>=1 && m==12 && d>21)))
  90.                    {
  91.                        System.out.println("Es Otoño");
  92.                    }
  93.                    else
  94.                    {
  95.                        System.out.println("Es Invierno");
  96.                    }
  97.                }
  98.            }
  99.        }
  100.        catch(Exception ex)
  101.        {
  102.            System.out.println("Error en la lectura "+ex);
  103.        }
  104.    }
  105.    public static boolean EsNum(String fex)
  106.    {
  107.        int j=0;
  108.        boolean e=false;
  109.  
  110.        while(j<fex.length())
  111.        {
  112.            if(!Character.isDigit(fex.charAt(j)))
  113.            {
  114.                e=true;
  115.            }
  116.            else
  117.            {
  118.                e=false;
  119.            }
  120.        }
  121.        return e;
  122.    }
  123. }
  124.  


En línea

andaluz


Desconectado Desconectado

Mensajes: 333



Ver Perfil
Re: ayuda con codigo
« Respuesta #1 en: 11 Mayo 2010, 19:09 pm »

el fallo es que no me imprime nada al introducirle la fecha.


En línea

Chuidiang

Desconectado Desconectado

Mensajes: 161



Ver Perfil WWW
Re: ayuda con codigo
« Respuesta #2 en: 11 Mayo 2010, 20:25 pm »

En el método EsNum() no incrementas la j, así que supongo que se queda en el while por los siglos de los siglos.
Se bueno.
En línea

andaluz


Desconectado Desconectado

Mensajes: 333



Ver Perfil
Re: ayuda con codigo
« Respuesta #3 en: 11 Mayo 2010, 20:28 pm »

es verdad, se me habia olvidado incrementar "j", por eso fallaba. gracias
En línea

andaluz


Desconectado Desconectado

Mensajes: 333



Ver Perfil
Re: ayuda con codigo
« Respuesta #4 en: 11 Mayo 2010, 20:54 pm »

me gustaria saber que fallo tiene este codigo, al utilizar || y &&, esque me lio en esto

Código
  1. if(((mes==3 && d>=3) || (mes==4 && d>=1 && mes==4 && d>=30) ||
  2.                (mes==5 && d>=1 && mes==5 && d>=31) || (mes==6 && d>=1 && mes==6 && d>21)))
  3.            {
  4.                System.out.println("Es Primavera");
  5.            }
  6.            else
  7.            {
  8.                if(((mes==6 && d>=21) || (mes==7 && d>=1 && mes==7 &&d>=31) ||
  9.                    (mes==8 && d>=1 && mes==8 && d>=31) || (mes==9 && d>=1 && m==9 && d>21)))
  10.                {
  11.                    System.out.println("Es Verano");
  12.                }
  13.                else
  14.                {
  15.                    if(((mes==9 && d>=21) || (mes==10 && d>=1 && mes==10 &&d>=31) ||
  16.                        (mes==11 && d>=1 && mes==11 && d>=31) || (mes==12 && d>=1 && m==12 && d>21)))
  17.                    {
  18.                        System.out.println("Es Otoño");
  19.                    }
  20.                    else
  21.                    {
  22.                        System.out.println("Es Invierno");
  23.                    }
  24.                }
  25.            }
  26.        }
  27.  
En línea

andaluz


Desconectado Desconectado

Mensajes: 333



Ver Perfil
Re: ayuda con codigo
« Respuesta #5 en: 12 Mayo 2010, 11:01 am »

me pueden ayudar a resolver este codigo, me dice siempre que es invierno, no me dice la estacion de la fecha que le introduzco, creo que las condiciones || y && no estan bien definidas, me ayudan a definirlas bien??
En línea

Chuidiang

Desconectado Desconectado

Mensajes: 161



Ver Perfil WWW
Re: ayuda con codigo
« Respuesta #6 en: 12 Mayo 2010, 19:27 pm »

Hazlo más simple y piensa un poco en todo el follón que tienes. Fíjate en el primer if, hay un trozo que pone

Código:
(mes==4 && d>=1 && mes==4 && d>=30)

suponiendo mes 4, tiene que ser mayor que 1 y mayor que 30. Sobre el primero ¿no?

Fija las cuatro fechas (mes/dia) de cambio de estacion en algun sitio y el if debe ser muy tonto si empiezas por el principio de año

Código:
if   (   diaActual < fechaInicioPrimavera ) ---> es invierno
else if ( diaActual < fechaInicioVerano ) ---> es primavera
....

Se bueno.



En línea

andaluz


Desconectado Desconectado

Mensajes: 333



Ver Perfil
Re: ayuda con codigo
« Respuesta #7 en: 13 Mayo 2010, 09:29 am »

ok, pero la verdad es que entiendo eso que me dices, como lo deberia de hacer? creoque me he equivocado (mes==4 && d>=1 && mes==4 && d<=30) ya que lo que quiero hacer es coger todos los dias en los que esta cada estacion del año.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda codigo
Programación C/C++
dario01dr 5 3,357 Último mensaje 21 Diciembre 2021, 03:30 am
por dario01dr
AYUDA CON UN CODIGO
Programación C/C++
cimli1996 2 2,042 Último mensaje 28 Febrero 2023, 18:12 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines