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:
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:
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 :
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: 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??
1-
Citarpero 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-
CitarLuego tampoco entiendo para que sirve: strAños = años.split(";");
quiere decir que si tienes
String años = "1990;1991";
String strAños[]= años.spli(";");
optendrias un array con los valores 1990 1991.
Saludos!