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[]; { int tamano; int opciones; "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 { "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; break; 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) { posicion--; } } 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++) { } } public static void ver_arreglo(int arreglo[]) { for(int posicion=0;posicion<arreglo.length;posicion++) anos=anos+arreglo[posicion]+"\n"; } public static void ver_anosbisiestos(int arreglo1[], int bisiestos[]) { for (int posicion = 0; posicion < bisiestos.length; posicion++) { años = años + bisiestos[posicion] + "\n"; } } public static void ver_ambosarreglos(int arreglo1[], int bisiestos[]) { 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
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++) { }
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
para que años.split(";");???
strAños = años.split(";");
Fuera de eso entiendo a la perfeccion cada linea de codigo. Alguien puede explicarme porfavor??