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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Explicacion de un simple ejercicio
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Explicacion de un simple ejercicio  (Leído 2,847 veces)
camaleon123

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Explicacion de un simple ejercicio
« en: 6 Enero 2010, 05:44 am »

Hola que tal a todos Feliz Añoo!

Estoy editando un codigo de un ejercicio que no pude hacer y que luego me ayudaron proporcionandome el codigo que si corria bien sin errores (cuestion simple que no podia hacer :S), pero hay una parte del codigo que me gustaria que alguien del foro me explique cual es su funcion. Para empezar el programa es:

Código
  1. package uni;
  2.  
  3. import javax.swing.*;
  4.  
  5. public class arrays_bisiestos
  6. {
  7.    static int bisiestos[];
  8.  
  9.    public static void main(String arg[])
  10.    {
  11.        int tamano;
  12.        int opciones;
  13.  
  14.        JOptionPane.showMessageDialog(null, "Este programa crea un arreglo del tamaño de tu gusto, \n " +
  15.                "donde almacenará valores entre los años 1980 y 2010. \n " +
  16.                "Para continuar da click en Aceptar");
  17.  
  18.        tamano=Integer.parseInt(JOptionPane.showInputDialog(null,"Introduce el total de número de años que deseas introducir para el arreglo: "));
  19.  
  20.        int arreglo1[]=new int[tamano];
  21.  
  22.        arrays_bisiestos.lectura(arreglo1);
  23.  
  24.        do
  25.        {
  26.            opciones=Integer.parseInt(JOptionPane.showInputDialog(null, "Escoge la opción de tu gusto: \n" +
  27.                    "1) Para ver el arreglo de años que has introducido. \n " +
  28.                    "2) Para visualizar cuales de los años que has introducido son años bisiestos. \n " +
  29.                    "3) Para visualizar ambos datos, el total de años introducido por ti y los años bisiestos. \n " +
  30.                    "4) Escribe para 4 para salir"));
  31.  
  32.            switch(opciones)
  33.            {
  34.                case 1: arrays_bisiestos.ver_arreglo(arreglo1);
  35.                break;
  36.  
  37.                case 2: arrays_bisiestos.ver_anosbisiestos(arreglo1, bisiestos);
  38.                break;
  39.  
  40.                case 3: arrays_bisiestos.ver_ambosarreglos(arreglo1, bisiestos);
  41.                break;
  42.  
  43.                case 4: JOptionPane.showMessageDialog(null, "Adios");
  44.                break;
  45.  
  46.                default: JOptionPane.showMessageDialog(null,"Opción Invalida, vuelve a intentarlo");
  47.                break;
  48.            }
  49.  
  50.        } while(opciones!=4);
  51.  
  52.    }
  53.  
  54.    public static void lectura(int arreglo[])
  55.    {
  56.  
  57.        for (int posicion = 0; posicion < arreglo.length; posicion++)
  58.        {
  59.            arreglo[posicion] = Integer.parseInt(JOptionPane.showInputDialog(null, "Introduzca el año para la posición: " + posicion));
  60.  
  61.            if(arreglo[posicion] < 1980 || arreglo[posicion] > 2010)
  62.            {
  63.                JOptionPane.showMessageDialog(null,"Solo admito años entre 1980 y 2010, vuelve a intentarlo");
  64.                posicion--;
  65.            }
  66.        }
  67.  
  68.        String años = "";
  69.  
  70.        String strAños[];
  71.  
  72.        for (int posicion = 0; posicion < arreglo.length; posicion++)
  73.        {
  74.            if(arreglo[posicion] % 4 == 0 || arreglo[posicion] % 400 == 0)
  75.            {
  76.                años = años + arreglo[posicion] + (posicion + 1 < arreglo.length ? ";" : "");
  77.            }
  78.        }
  79.  
  80.        strAños = años.split(";");
  81.  
  82.        bisiestos = new int[strAños.length];
  83.  
  84.        for (int posicion = 0; posicion < strAños.length; posicion++)
  85.        {
  86.            bisiestos[posicion] = Integer.parseInt(strAños[posicion]);
  87.        }
  88.    }
  89.  
  90.    public static void ver_arreglo(int arreglo[])
  91.    {
  92.        String anos="";
  93.  
  94.        for(int posicion=0;posicion<arreglo.length;posicion++)
  95.            anos=anos+arreglo[posicion]+"\n";
  96.  
  97.        JOptionPane.showMessageDialog(null,"Los años introducidos fueron: \n" +anos);
  98.    }
  99.  
  100.    public static void ver_anosbisiestos(int arreglo1[], int bisiestos[]) {
  101.  
  102.        String años = "";
  103.        for (int posicion = 0; posicion < bisiestos.length; posicion++)
  104.        {
  105.            años = años + bisiestos[posicion] + "\n";
  106.        }
  107.  
  108.        JOptionPane.showMessageDialog(null, "Los años son: \n" + años);
  109.    }
  110.  
  111.    public static void ver_ambosarreglos(int arreglo1[], int bisiestos[])
  112.    {
  113.        String anos="";
  114.        String bisiesto="";
  115.  
  116.        for(int posicion=0;posicion<arreglo1.length;posicion++)
  117.            anos = anos + arreglo1[posicion] + "\n";
  118.  
  119.        for(int posicion=0;posicion<bisiestos.length;posicion++)
  120.            bisiesto = bisiesto + bisiestos[posicion] + "\n";
  121.  
  122.        JOptionPane.showMessageDialog(null,"Los años introducidos fueron: \n" +anos + "Los bisiestos fueron: \n" + bisiesto);
  123.    }
  124. }
  125.  

Como ven el programa crea un array del tamaño que desee el usuario y luego pide los valores, los cuales solo pueden ser entre 1980 y 2010, luego entra el switch, y de ahi se escoge la opcion deseada.

Entiendo a la perfeccion casi todo el codigo, a excepcion de la siguiente parte del metodo lectura, que no entiendo bien:

Código
  1. String años = "";
  2.  
  3.        String strAños[];
  4.  
  5.        for (int posicion = 0; posicion < arreglo.length; posicion++)
  6.        {
  7.            if(arreglo[posicion] % 4 == 0 || arreglo[posicion] % 400 == 0)
  8.            {
  9.                años = años + arreglo[posicion] + (posicion + 1 < arreglo.length ? ";" : "");
  10.            }
  11.        }
  12.  
  13.        strAños = años.split(";");
  14.  
  15.        bisiestos = new int[strAños.length];
  16.  
  17.        for (int posicion = 0; posicion < strAños.length; posicion++)
  18.        {
  19.            bisiestos[posicion] = Integer.parseInt(strAños[posicion]);
  20.        }
  21.  

Lo que no entiendo de esa parte es para sirve + (posicion + 1 < arreglo.length ? ";" : ""); de la siguiente linea de codigo :

Código
  1.  años = años + arreglo[posicion] + (posicion + 1 < arreglo.length ? ";" : "");
  2.  

Entiendo que es para concatenar el resultado, pero porque entre parentesis la siguiente linea: (posicion + 1 < arreglo.length ? ";" : "") y para que sirve el signo ? y las comillas y los ; y :

Luego tampoco entiendo para que sirve:
Código
  1. strAños = años.split(";");
para que años.split(";");???

Fuera de eso entiendo a la perfeccion cada linea de codigo. Alguien puede explicarme porfavor??


« Última modificación: 6 Enero 2010, 05:45 am por camaleon123 » En línea

Leyer


Desconectado Desconectado

Mensajes: 786


leyer@elhacker.net


Ver Perfil WWW
Re: Explicacion de un simple ejercicio
« Respuesta #1 en: 6 Enero 2010, 06:07 am »

 1-
Citar
pero porque entre parentesis la siguiente linea: (posicion + 1 < arreglo.length ? ";" : "") y para que sirve el signo ? y las comillas y los ; y :

se le llama operador ternario en esa linea te dice que si la posicion+1 < arreglo.length si es verdadero entonces a la cadena se le coloca un ";" en caso contrario se le coloca un ":"

2-
Citar
Luego tampoco entiendo para que sirve:  strAños = años.split(";");

quiere decir que si tienes

Código
  1. String años = "1990;1991";
  2. String strAños[]= años.spli(";");
  3.  
optendrias un array con los valores 1990 1991.

Saludos!



« Última modificación: 6 Enero 2010, 06:09 am por LEYER » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] Ejercicio simple
Programación C/C++
Cracky7 6 2,826 Último mensaje 16 Febrero 2012, 01:17 am
por rir3760
Explicación de un ejercicio de matriz unidad en lenguaje Java.
Java
proview 2 2,825 Último mensaje 4 Marzo 2013, 00:00 am
por proview
Ejercicio simple estructuras
Programación C/C++
Ja_90 4 2,446 Último mensaje 13 Octubre 2014, 20:33 pm
por Ja_90
Ejercicio simple de C++
Programación C/C++
sjav96 0 1,307 Último mensaje 20 Marzo 2016, 19:27 pm
por sjav96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines