elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 02:00  


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  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 1,119 veces)
camaleon123

Desconectado Desconectado

Mensajes: 19


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

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
package uni;
 
import javax.swing.*;
 
public class arrays_bisiestos
{
   static int bisiestos[];
 
   public static void main(String arg[])
   {
       int tamano;
       int opciones;
 
       JOptionPane.showMessageDialog(null, "Este programa crea un arreglo del tamaño de tu gusto, \n " +
               "donde almacenará valores entre los años 1980 y 2010. \n " +
               "Para continuar da click en Aceptar");
 
       tamano=Integer.parseInt(JOptionPane.showInputDialog(null,"Introduce el total de número de años que deseas introducir para el arreglo: "));
 
       int arreglo1[]=new int[tamano];
 
       arrays_bisiestos.lectura(arreglo1);
 
       do
       {
           opciones=Integer.parseInt(JOptionPane.showInputDialog(null, "Escoge la opción de tu gusto: \n" +
                   "1) Para ver el arreglo de años que has introducido. \n " +
                   "2) Para visualizar cuales de los años que has introducido son años bisiestos. \n " +
                   "3) Para visualizar ambos datos, el total de años introducido por ti y los años bisiestos. \n " +
                   "4) Escribe para 4 para salir"));
 
           switch(opciones)
           {
               case 1: arrays_bisiestos.ver_arreglo(arreglo1);
               break;
 
               case 2: arrays_bisiestos.ver_anosbisiestos(arreglo1, bisiestos);
               break;
 
               case 3: arrays_bisiestos.ver_ambosarreglos(arreglo1, bisiestos);
               break;
 
               case 4: JOptionPane.showMessageDialog(null, "Adios");
               break;
 
               default: JOptionPane.showMessageDialog(null,"Opción Invalida, vuelve a intentarlo");
               break;
           }
 
       } while(opciones!=4);
 
   }
 
   public static void lectura(int arreglo[])
   {
 
       for (int posicion = 0; posicion < arreglo.length; posicion++)
       {
           arreglo[posicion] = Integer.parseInt(JOptionPane.showInputDialog(null, "Introduzca el año para la posición: " + posicion));
 
           if(arreglo[posicion] < 1980 || arreglo[posicion] > 2010)
           {
               JOptionPane.showMessageDialog(null,"Solo admito años entre 1980 y 2010, vuelve a intentarlo");
               posicion--;
           }
       }
 
       String años = "";
 
       String strAños[];
 
       for (int posicion = 0; posicion < arreglo.length; posicion++)
       {
           if(arreglo[posicion] % 4 == 0 || arreglo[posicion] % 400 == 0)
           {
               años = años + arreglo[posicion] + (posicion + 1 < arreglo.length ? ";" : "");
           }
       }
 
       strAños = años.split(";");
 
       bisiestos = new int[strAños.length];
 
       for (int posicion = 0; posicion < strAños.length; posicion++)
       {
           bisiestos[posicion] = Integer.parseInt(strAños[posicion]);
       }
   }
 
   public static void ver_arreglo(int arreglo[])
   {
       String anos="";
 
       for(int posicion=0;posicion<arreglo.length;posicion++)
           anos=anos+arreglo[posicion]+"\n";
 
       JOptionPane.showMessageDialog(null,"Los años introducidos fueron: \n" +anos);
   }
 
   public static void ver_anosbisiestos(int arreglo1[], int bisiestos[]) {
 
       String años = "";
       for (int posicion = 0; posicion < bisiestos.length; posicion++)
       {
           años = años + bisiestos[posicion] + "\n";
       }
 
       JOptionPane.showMessageDialog(null, "Los años son: \n" + años);
   }
 
   public static void ver_ambosarreglos(int arreglo1[], int bisiestos[])
   {
       String anos="";
       String bisiesto="";
 
       for(int posicion=0;posicion<arreglo1.length;posicion++)
           anos = anos + arreglo1[posicion] + "\n";
 
       for(int posicion=0;posicion<bisiestos.length;posicion++)
           bisiesto = bisiesto + bisiestos[posicion] + "\n";
 
       JOptionPane.showMessageDialog(null,"Los años introducidos fueron: \n" +anos + "Los bisiestos fueron: \n" + bisiesto);
   }
}
 

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
String años = "";
 
       String strAños[];
 
       for (int posicion = 0; posicion < arreglo.length; posicion++)
       {
           if(arreglo[posicion] % 4 == 0 || arreglo[posicion] % 400 == 0)
           {
               años = años + arreglo[posicion] + (posicion + 1 < arreglo.length ? ";" : "");
           }
       }
 
       strAños = años.split(";");
 
       bisiestos = new int[strAños.length];
 
       for (int posicion = 0; posicion < strAños.length; posicion++)
       {
           bisiestos[posicion] = Integer.parseInt(strAños[posicion]);
       }
 

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

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

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
 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 por camaleon123 » En línea
Leyer
Moderador
***
Desconectado Desconectado

Mensajes: 772


[]


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

 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
String años = "1990;1991";
String strAños[]= años.spli(";");
 
optendrias un array con los valores 1990 1991.

Saludos!



« Última modificación: 6 Enero 2010, 06:09 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++
guille10000 6 334 Último mensaje 16 Febrero 2012, 01:17
por rir3760
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines