{"id":681,"date":"2026-02-18T20:36:34","date_gmt":"2026-02-18T20:36:34","guid":{"rendered":"https:\/\/www.bogotajvm.com.co\/?page_id=681"},"modified":"2026-06-30T22:13:04","modified_gmt":"2026-06-30T22:13:04","slug":"programas-en-java","status":"publish","type":"page","link":"https:\/\/www.bogotajvm.com.co\/en\/starter-kit\/programas-en-java\/","title":{"rendered":"Programas en Java"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"681\" class=\"elementor elementor-681\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-eb4a425 e-flex e-con-boxed e-con e-parent\" data-id=\"eb4a425\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-f299dc4 e-con-full e-flex e-con e-child\" data-id=\"f299dc4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-06b05da elementor-widget elementor-widget-html\" data-id=\"06b05da\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<link rel=\"license\" href=\"https:\/\/creativecommons.org\/licenses\/by\/4.0\/\">\r\n\r\n<link rel=\"stylesheet\" href=\"css\/main.css\">\r\n<link href=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/themes\/prism.css\" rel=\"stylesheet\" \/>\r\n<link href=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/plugins\/line-numbers\/prism-line-numbers.css\" rel=\"stylesheet\" \/>\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/prism.min.js\"><\/script>\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/components\/prism-java.min.js\"><\/script>\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/plugins\/line-numbers\/prism-line-numbers.min.js\"><\/script>\r\n\r\n<h1>Programas en Java<\/h1>\r\n\r\n  \r\n<figure class=\"code-block\">\r\n          <figcaption>C\u00f3digo 01 - Hola Mundo! Organizado en un proyecto Java<\/figcaption>\r\n        <pre class=\"line-numbers\"><code class=\"language-java\">public class Saludos {\r\n\r\n    public static String general() {\r\n  return para(\"Mundo\");\r\n} \r\n\r\npublic static String para(String quien) {\r\n  return String.format(\"Hola %s!\", quien);\r\n}\r\n} <\/code><\/pre>\r\n        <\/figure>\r\n\r\n<figure class=\"code-block\">\r\n        <pre class=\"line-numbers\"><code class=\"language-java\">public class Main {\r\n    public static void main(String[] args) {\r\n     System.out.println(Saludos.general());\r\n     System.out.println(Saludos.para(\"Java\"));\r\n  }\r\n} <\/code><\/pre>\r\n        <\/figure>\r\n\r\n         <figcaption><strong><\/strong><\/figcaption>\r\n            <pre><code class=\"language-java\">Hola Mundo!\r\nHola Java<\/code><\/pre>\r\n        <\/figure> \r\n\r\n<p>En Java las construcciones principales son las clases. Todas las funciones que hemos definido\r\ndeben vivir dentro de una clase. Lo bueno es que el nombre de la clase sirve como nombre de\r\nagrupaci\u00f3n de sus funciones. Por ejemplo el nombre de la clase Math, sirve como nombre de\r\nagrupaci\u00f3n para las funciones sqrt(), cosine(), max(), etc.<\/p>        \r\n\r\n<p>Esto lo puedes tener en cuenta a la hora de crear tus funciones. En el C\u00f3digo 01, l\u00ednea 07 la\r\nfunci\u00f3n se llama para() porque para usarla escribir\u00e1s Saludos.para() que es un nombre muy\r\ndescriptivo! Las reglas para los identificadores de clase siguen las mismas reglas que para las\r\nfunciones y variables, pero las clases Java usan CamelCase en may\u00fasculas en lugar de\r\nCamelCase en min\u00fasculas.<\/p>\r\n\r\n<p>Tambi\u00e9n ten en cuenta que las funciones necesitan dos modificadores adicionales que no\r\nhemos necesitado usar antes: public static. El modificador &lt;public&gt; se usa para indicar que tu\r\nm\u00e9todo puede ser usado desde cualquier punto de tu aplicaci\u00f3n. El m\u00e9todo main siempre debe\r\nser p\u00fablico. Cuando haces una aplicaci\u00f3n muy grande, es \u00fatil poder restringir qui\u00e9n puede\r\nutilizar ciertas partes de ella. Por ahora usaremos siempre &lt;public&gt; en nuestras funciones.<\/p>\r\n\r\n<p>El modificador &lt;static&gt; determina, entre otras cosas, como se debe invocar. Un m\u00e9todo &lt;static&gt;\r\nindica que debes anteponer el nombre de la clase al nombre del m\u00e9todo separados por punto.\r\nPor ejemplo los m\u00e9todos sqrt(), cosine(), max() son static y est\u00e1n declarados en la clase Math\r\npor lo que debes invocarlos Math.sqrt(), Math.cosine(), Math.max().<\/p>\r\n\r\n<p>Para poder ejecutar c\u00f3digo en Java, necesitar\u00e1s un m\u00e9todo main. Como se mencion\u00f3, esto\r\ndebe estar en una clase que puede cualquier nombre, pero es una buena idea darle un nombre\r\nque deje claro que es la clase con el m\u00e9todo main, por lo que Main (con M may\u00fascula) parece\r\napropiado.<\/p>\r\n\r\n<p>\u00bfCu\u00e1l es el m\u00e9todo principal? Es un m\u00e9todo con estas propiedades:<\/p>\r\n\r\n<p><ul><li>Es p\u00fablico <\/li>\r\n<li>Es est\u00e1tico<\/li>\r\n<li>No tiene un valor de retorno (de ah\u00ed la palabra reservada void)<\/li>\r\n<li> Se llama main (todas las letras en min\u00fasculas)<\/li>\r\n<li> Tiene solo un par\u00e1metro que es de tipo String[], puede tener cualquier nombre, pero generalmente se llama args.<\/li>\r\n<\/ul><\/p>\r\n\r\n<p>Este es el punto de entrada para un programa Java. Sin uno, su c\u00f3digo no ser\u00e1 ejecutable por\r\nuna computadora. Cuando el programa se ejecuta, ese es el primer m\u00e9todo que se va a\r\nejecutar.<\/p>\r\n\r\n<p>Como se mencion\u00f3, el m\u00e9todo main puede ser definido dentro de cualquier clase, incluso\r\npodr\u00edamos ponerlo en la clase Saludos, pero ser\u00eda una mala idea. En general es bueno tener\r\nclases que hagan una cosa espec\u00edfica: las hace m\u00e1s f\u00e1ciles de entender y reutilizar. Si la clase\r\nSaludos tiene m\u00e9todos para generar saludos esa ya es una responsabilidad. No tiene sentido\r\nagregar adem\u00e1s la responsabilidad de tener el punto de entrada del programa. Entonces el\r\nm\u00e9todo main() deber\u00eda estar en una clase propia.<\/p>\r\n\r\n<p>Para imprimir datos en la salida est\u00e1ndar, que por defecto es la terminal de tu computadora,\r\npuede usar el m\u00e9todo println() del objeto System.out, que recibe un String como par\u00e1metro.<\/p>\r\n\r\n<h2 id='paquetes'>Paquetes<\/h2>\r\n\r\n<figure class=\"code-block\">\r\n          <figcaption>C\u00f3digo 02 - Saludos pero con paquetes<\/figcaption>\r\n        <pre class=\"line-numbers\"><code class=\"language-java\">package code.jugs.saludos;\r\n\r\n  public class Saludos {\r\n\r\n    public static String general() {\r\n  return para(\"Mundo\");\r\n} \r\n\r\npublic static String para(String quien) {\r\n  return String.format(\"Hola %s!\", quien);\r\n  }\r\n} <\/code><\/pre>\r\n        <\/figure>\r\n\r\n<figure class=\"code-block\">\r\n        <pre class=\"line-numbers\"><code class=\"language-java\">package code.jugs.saludos;\r\n\r\n    public class Main {\r\n\r\n     public static void main(String[] args) {\r\n      System.out.println(Saludos.general());\r\n      System.out.println(Saludos.para(\"Java\"));\r\n  }\r\n} <\/code><\/pre>\r\n\r\n       \r\n<p>Imag\u00ednate cu\u00e1ntos proyectos de software tienen una clase Usuario. Podr\u00eda darse el caso de que\r\nest\u00e9s desarrollando un sistema que utilice una biblioteca externa \u00bfqu\u00e9 pasa si tu c\u00f3digo y el de\r\nellos tienen una clase con el mismo nombre? Cuando te refieres a esa clase, \u00bfc\u00f3mo sabr\u00eda el\r\ncompilador qu\u00e9 c\u00f3digo usar? Bueno, resulta que como humanos tenemos apellidos, mientras\r\nque las clases en Java tienen paquetes. Cada clase deber\u00eda tener un paquete, y cada paquete\r\ndeber\u00eda constar de al menos 3 partes separadas por puntos: la costumbre es que las dos\r\nprimeras sean el dominio inverso de su empresa, por ejemplo. com.java, y el siguiente un\r\nidentificador del proyecto al que pertenece la clase. Si no es una empresa, puedes utilizar\r\ncualquier cosa que consideres sea \u00fanica.<\/p>\r\n\r\n<p>Solo puede haber un paquete por clase, puede ser tan largo como quieras y siempre tendr\u00e1 que\r\nser la primera l\u00ednea de una clase, que no sea un comentario.<\/p>\r\n\r\n<h2 id='importaciones'>Importaciones<\/h2>\r\n\r\n<figure class=\"code-block\">\r\n          <figcaption>Codigo 03 - Import<\/figcaption>\r\n        <pre class=\"line-numbers\"><code class=\"language-java\">package code.jugs.bisiesto.calculos;\r\n  public class Aritmetica {\r\n\r\n    public static boolean esM\u00faltiplo(int a, int b) {\r\n return (a % b) == 0;\r\n}\r\n\r\n  public static boolean esPar(int n) {\r\n    return esM\u00faltiplo(n, 2);\r\n}\r\n\r\n  public static boolean esImpar(int n) {\r\n    return !esPar(n);\r\n  }\r\n} <\/code><\/pre>\r\n        <\/figure>\r\n\r\n<figure class=\"code-block\">\r\n        <pre class=\"line-numbers\"><code class=\"language-java\">package code.jugs.biesiestos.utils;\r\nimport code.jugs.bisiestos.calculos.Aritmetica;\r\n\r\npublic class A\u00f1oUtils {\r\n  public static boolean esBisiesto(int a\u00f1o) {\r\n      return Aritmetica.esMultiplo(a\u00f1o, 4)\r\n        && (Aritmetica.esMultiplo(a\u00f1o, 400) || !Aritmetica.esMultiplo(a\u00f1o, 100));\r\n  }\r\n} <\/code><\/pre>\r\n\r\n<figure class=\"code-block\">\r\n        <pre class=\"line-numbers\"><code class=\"language-java\">package code.jugs.bisiestos;\r\n\r\n          import code.jugs.bisiestos.utils.A\u00f1oUtils;\r\n\r\n          public class Main {\r\n\r\n            public static void main(String[] args) {\r\n              System.out.println(A\u00f1oUtils.esBisiesto(2024));\r\n              System.out.println(A\u00f1oUtils.esBisiesto(2000));\r\n              System.out.println(A\u00f1oUtils.esBisiesto(1900));\r\n    }\r\n} <\/code><\/pre>\r\n\r\n\r\n <figcaption><strong><\/strong><\/figcaption>\r\n            <pre><code class=\"language-java\">true\r\ntrue\r\nfalse<\/code><\/pre>\r\n        <\/figure> \r\n\r\n<p>Si en su c\u00f3digo usa una clase YearUtils, \u00bfc\u00f3mo sabe la JVM d\u00f3nde est\u00e1 esa clase? Bueno,\r\nresulta que no es as\u00ed, por lo que debes proporcionar el nombre completo, que es solo el\r\npaquete + nombre de clase para que la JVM lo sepa. Usted proporciona esta informaci\u00f3n con\r\ndeclaraciones de importaci\u00f3n. Las declaraciones de importaci\u00f3n deben aparecer despu\u00e9s de la\r\ndeclaraci\u00f3n del paquete pero antes de la declaraci\u00f3n de clase. Puede tener tantas\r\nimportaciones como necesite, pero si usa otras clases en el mismo paquete, la declaraci\u00f3n de\r\nimportaci\u00f3n no es necesaria. Tambi\u00e9n hay algunos paquetes que no requieren declaraciones de\r\nimportaci\u00f3n porque son esenciales, como el paquete java.util de donde provienen clases como\r\nObject, String y otras.<\/p>\r\n\r\n<h2 id='importaciones-static'>Importaciones Static<\/h2>\r\n\r\n<figure class=\"code-block\">\r\n          <figcaption>C\u00f3digo 04 - Mejorando la legibilidad con import static<\/figcaption>\r\n        <pre class=\"line-numbers\"><code class=\"language-java\">package code.jugs.biesiestos.utils;\r\n  \r\nimport static code.jugs.bisiestos.calculos.Aritmetica.esM\u00faltiplo;\r\n  public class A\u00f1oUtils {\r\n    public static boolean esBisiesto(int a\u00f1o) {\r\n    return esM\u00faltiplo(a\u00f1o, 4) && (esM\u00faltiplo(a\u00f1o, 400) || !esM\u00faltiplo(a\u00f1o, 100));\r\n    }\r\n} <\/code><\/pre>\r\n        <\/figure>\r\n\r\n<p>Por temas de legibilidad, podr\u00edamos interesarnos en llamar a las funciones en otra clase, solo\r\npor su nombre. Para tal fin podemos usar un import static. Un import static es como un import,\r\npero con el modificador static despu\u00e9s de import, y lo que sigue es el paquete de la clase, el\r\nnombre de la clase y finalmente el nombre de la funci\u00f3n, separados por puntos.<\/p>\r\n\r\n<p>Si quisiera hacer lo mismo con otra funci\u00f3n de la misma clase, debo agregar un nuevo import\r\nstatic.<\/p>\r\n\r\n<p>\u00bfCu\u00e1ndo conviene usar un import static y no un simple import? Es un tema exclusivamente de\r\nlegibilidad. No hay ninguna funcionalidad impactada por usar uno u otro.<\/p>\r\n\r\n<h2 id='constantes-clase'>Constantes de Clase<\/h2>\r\n\r\n<figure class=\"code-block\">\r\n          <figcaption>C\u00f3digo 05 - Constantes de Clase<\/figcaption>\r\n        <pre class=\"line-numbers\"><code class=\"language-java\">package code.jugs.basica.fisica;\r\n\r\n  public class F\u00edsicaPlanetaria {\r\n    private static final double G = 6.67430e-11;\r\n    private static final double GRAVEDAD_SUPERFICIAL_TIERRA = gravedadSuperficial(5.972e24, 6.378e6);\r\n    private static final double GRAVEDAD_SUPERFICIAL_MARTE = gravedadSuperficial(6.421e23, 3.3972e6);\r\n  public static double gravedadSuperficial(double masa, double radio) {\r\n     return G \/ Math.pow(radio, 2.0) * masa;\r\n    } \r\n  public static double pesoEnMarte(double peso) {\r\n     return GRAVEDAD_SUPERFICIAL_MARTE \/ GRAVEDAD_SUPERFICIAL_TIERRA * peso;\r\n  } \r\npublic static double energ\u00edaGravitatoria(double masa1, double masa2, double distancia) {\r\nreturn -((G * masa1 * masa2) \/ distancia);\r\n  }\r\n} <\/code><\/pre>\r\n        <\/figure>\r\n\r\n<p>En las l\u00edneas 5 a 7 creamos constantes de clase, indicados por los modificadores static y final.\r\nEl modificador private simplemente indica que la constante solo va a ser usada dentro de la\r\nmisma clase F\u00edsicaPlanetaria, en contraposici\u00f3n al otro modificador de visibilidad que hemos\r\nvisto: public. M\u00e1s all\u00e1 de esos modificadores, una constante de clase se declara como una\r\nvariable cualquiera, utilizando su tipo de dato en vez de &lt;var&gt;.<\/p>\r\n\r\n<p>Al igual que las variables, las constantes de clase se crean para darle un nombre a un valor. La\r\ndiferencia es que siendo constantes de clase estas se calculan una sola vez. As\u00ed que sin\r\nimportar cuantas veces llamemos la funci\u00f3n pesoEnMarte(), el c\u00e1lculo de la gravedad\r\nsuperficial de la tierra y de marte se calcula una sola vez. Tambi\u00e9n podr\u00eda pasar que m\u00faltiples\r\nfunciones usen esta misma constante pero nuevamente al ser una constante de clase solo se\r\ncalcular\u00e1 una vez.<\/p>\r\n\r\n<p>Esto permite una optimizaci\u00f3n en desempe\u00f1o pero tambi\u00e9n mejora la legibilidad del c\u00f3digo al\r\ndejar claro que la variable G en gravedadSuperficial() y en energ\u00edaGravitatoria() es realmente la\r\nmisma.<\/p>\r\n\r\n<h2 id='especificaciones'>Especificaciones<\/h2>\r\n\r\n<figure class=\"code-block\">\r\n          <figcaption>C\u00f3digo 05 - Constantes de Clase<\/figcaption>\r\n        <pre class=\"line-numbers\"><code class=\"language-java\">package code.jugs.basica.aritmetica;\r\npublic class Aritmetica {\r\n  \/**\r\n  * Verifica si un n\u00famero es m\u00faltiplo de otro\r\n  * *\r\n  @param a, un n\u00famero entero\r\n  * @param b, un n\u00famero entero diferente de 0\r\n  * @return true si b es m\u00faltiplo de a, false en caso contrario\r\n  *\/\r\npublic static boolean esMultiplo(int a, int b) {\r\nreturn (a % b) == 0;\r\n  } \r\n  \/**\r\n  * Verifica si un n\u00famero es par.\r\n  * Esta implementaci\u00f3n equivale a verificar que el n\u00famero\r\n  * sea divisible por 2. Bajo esta implementaci\u00f3n, 0 es par.\r\n  * *\r\n  @param n, un n\u00famero entero\r\n  * @return true if a is a multiple of b, false otherwise\r\n  *\/\r\npublic static boolean esPar(int n) {\r\nreturn esMultiplo(n, 2);\r\n  }\r\n} <\/code><\/pre>\r\n        <\/figure>\r\n\r\n<p>A veces tenemos errores en nuestros programas porque hacemos suposiciones sobre las\r\nfunciones que usamos en nuestro c\u00f3digo. Es perfectamente normal que su funci\u00f3n tenga\r\ncondiciones previas: condiciones que los par\u00e1metros deben cumplir para que la funci\u00f3n\r\nfuncione correctamente, p. isLeap() espera un a\u00f1o positivo. Tambi\u00e9n es una muy buena idea\r\nque su funci\u00f3n especifique sus condiciones posteriores: qu\u00e9 puede esperar del valor de\r\nretorno, p. \u00bfes positivo? \u00bfEst\u00e1 siempre entre un rango, etc. Las condiciones previas y\r\nposteriores de un m\u00e9todo se conocen colectivamente como especificaci\u00f3n de una funci\u00f3n?<\/p>\r\n\r\n<p>Java proporciona Javadocs para escribir especificaciones. Los Javadocs comienzan con \/**\r\ny terminan con *\/. Por motivos est\u00e9ticos, es com\u00fan agregar un * extra en cada l\u00ednea.\r\nPrimero, proporcione una breve descripci\u00f3n de lo que hace el m\u00e9todo. Si elige un buen\r\nnombre, la descripci\u00f3n simple no es tan importante, pero la descripci\u00f3n es un lugar donde\r\npuede brindar m\u00e1s detalles sobre el desempe\u00f1o del m\u00e9todo, detalles sobre su\r\nimplementaci\u00f3n u otra informaci\u00f3n \u00fatil. Adem\u00e1s de la descripci\u00f3n, debe tener un @param y\r\nluego el nombre del par\u00e1metro y luego explicar sus condiciones previas, si las hubiera.\r\nFinalmente tenga un @return para especificar las condiciones posteriores.<\/p>\r\n\r\n<p>Existe una herramienta oficial tambi\u00e9n llamada Javadocs que produce documentaci\u00f3n\r\nescrita en HTML, de hecho, la documentaci\u00f3n oficial que usted ha escrito se produjo con esa\r\nherramienta. Tambi\u00e9n se pueden escribir Javadocs para clases, lo cual tambi\u00e9n es una\r\nbuena idea<\/p>\r\n\r\n<h3>Nota sobre el material<\/h3>\r\n\r\n<p>El material seguir\u00e1 utilizando la convenci\u00f3n usada hasta ahora de mostrar los ejemplos de\r\nc\u00f3digo como funciones sin modificadores public y static y sin ponerlas como parte de una clase,\r\nesto con el fin de ahorrar espacio y hacer el c\u00f3digo m\u00e1s f\u00e1cil de leer.<\/p>\r\n\r\n<p>Si vas a copiar ese c\u00f3digo en Eclipse debes recordar crear una clase nueva o reutilizar una\r\nclase existente. Si vas a crear una nueva entonces debes escoger tambi\u00e9n un nombre de\r\npaquete.<\/p>\r\n\r\n<p>Los ejemplos de uso tambi\u00e9n se seguir\u00e1n mostrando como antes, para probarlos debes ir a la\r\nclase Main de tu proyecto y usar System.out.println() y utilizar el llamado de ejemplo como\r\nargumento, y puedes ver en la salida est\u00e1ndar que obtienes el mismo valor indicado.<\/p>\r\n\r\n<h3 id=\"ejercicios-cap5\">Ejercicios<\/h3>\r\n\r\n<h4>E5.1<\/h4>\r\n\r\n<p>Rellena el hueco con una de las opciones numeradas, de modo que si ejecut\u00e1ramos el\r\nprograma obtuvi\u00e9ramos el resultado indicado.<\/p>\r\n\r\n<figure class=\"code-block\">\r\n          <figcaption><strong>E5.1<\/strong><\/figcaption>\r\n            <pre><code class=\"language-java\">package code.jugs.basica;\r\npublic class Main {\r\n  public static void ___(String[] args) {\r\n    System.out.println(\"\u00a1Hola Mundo!\");\r\n  }\r\n}<\/code><\/pre>\r\n        <\/figure>\r\n\r\n<figure class=\"code-block\">\r\n            <pre><code class=\"language-java\">\u00a1Hola Mundo!<\/code><\/pre>\r\n        <\/figure>\r\n\r\n<ol>\r\n  <li>Main<\/li>\r\n  <li>main <\/li>\r\n  <li>init <\/li>\r\n  <li>saludos <\/li>\r\n<\/ol>\r\n\r\n<h4>E5.2<\/h4>\r\n\r\n<p>Rellena el hueco con una de las opciones numeradas, de modo que no haya errores de\r\ncompilaci\u00f3n y se produzca el resultado indicado al ejecutar el programa:<\/p>\r\n\r\n<figure class=\"code-block\">\r\n            <pre><code class=\"language-java\">package code.jugs.basica.aritmetica;\r\npublic class Aritm\u00e9tica {\r\n  public static double hipotenusa(double a, double b) {\r\n    return Math.sqrt((a * a) + (b * b));\r\n  }\r\n}<\/code><\/pre>\r\n        <\/figure>\r\n\r\n<figure class=\"code-block\">\r\n            <pre><code class=\"language-java\">package code.jugs.basica;\r\nimport ___;\r\npublic class Main {\r\n  public static void main(String[] args) {\r\n    System.out.println(Aritm\u00e9tica.hipotenusa(3.0, 4.0));\r\n  }\r\n}<\/code><\/pre>\r\n        <\/figure>\r\n\r\n        <figure class=\"code-block\">\r\n            <pre><code class=\"language-java\">5.0<\/code><\/pre>\r\n        <\/figure>\r\n\r\n<ol>\r\n  <li>code.jugs.basica.aritmetica.Aritm\u00e9tica<\/li>\r\n  <li>code.jugs.basica.aritmetica <\/li>\r\n  <li>Aritm\u00e9tica <\/li>\r\n  <li>hipotenusa <\/li>\r\n<\/ol>\r\n\r\n\r\n<h4>E5.3<\/h4>\r\n\r\n<p>Rellena el hueco con una de las opciones numeradas, de modo que no haya errores de\r\ncompilaci\u00f3n:<\/p>\r\n\r\n<figure class=\"code-block\">\r\n            <pre><code class=\"language-java\">package code.jugs.basica.aritmetica;\r\npublic class Aritm\u00e9tica {\r\n  public static boolean esMultiplo(int a, int b) {\r\n    return (a % b) == 0;\r\n  }\r\n}<\/code><\/pre>\r\n        <\/figure>\r\n\r\n<figure class=\"code-block\">\r\n            <pre><code class=\"language-java\">package code.jugs.basica.tiempo;\r\nimport ___ code.jugs.basica.aritmetica.Aritm\u00e9tica.esM\u00faltiplo;\r\n  public class A\u00f1oUtils {\r\n    public static boolean esA\u00f1oBisiesto(int a\u00f1o) {\r\n      return esMultiplo(a\u00f1o, 4)\r\n        && (esMultiplo(a\u00f1o, 400) || !esM\u00faltiplo(a\u00f1o, 100));\r\n  }\r\n}<\/code><\/pre>\r\n        <\/figure>\r\n\r\n\r\n<ol>\r\n  <li>public<\/li>\r\n  <li>boolean<\/li>\r\n  <li>static<\/li>\r\n  <li>package<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<p>\u00a9 2022 Carlos Obreg\u00f3n. This work is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0)<\/p>\r\n\r\n\r\n\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d93ac39 e-flex e-con-boxed e-con e-parent\" data-id=\"d93ac39\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-15c8ba3 elementor-widget elementor-widget-shortcode\" data-id=\"15c8ba3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t<div data-elementor-type=\"container\" data-elementor-id=\"2038\" class=\"elementor elementor-2038\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-95a4ae3 e-flex e-con-boxed e-con e-parent\" data-id=\"95a4ae3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-19c4dee elementor-widget elementor-widget-html\" data-id=\"19c4dee\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t   <script>\nfunction initChapterNav(activeIndex) {\n\n  \/* \u2500\u2500 Chapters \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  const chapters = [\n    {\n      title: \"Funciones\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/funciones\",\n      sections: [\n        { title: \"\u00a1Hola Mundo! \u00a1Hola Java!\", anchor: \"hola-java\" },\n        { title: \"\u00a1Hola Mundo! version 2.0\",  anchor: \"hola-java-refactor\" },\n        { title: \"Espacio en blanco\",          anchor: \"espacio-en-blanco\" },\n        { title: \"Comentarios\",                anchor: \"comentarios\" },\n        { title: \"Quiz\",                anchor: \"Quiz\" },\n        { title: \"Ejercicios\",                 anchor: \"ejercicios\" },\n      ]\n    },\n    {\n      title: \"Operadores\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/operadores\",\n      sections: [\n        { title: \"Tipos Primitivos\",          anchor: \"tipos-primitivos\" },\n        { title: \"Operadores Num\u00e9ricos\",      anchor: \"operadores-numericos\" },\n        { title: \"Operadores Relacionales\",   anchor: \"operadores-relacionales\" },\n        { title: \"Operadores L\u00f3gicos\",        anchor: \"operadores-logicos\" },\n        { title: \"Operador Ternario\",         anchor: \"operador-ternario\" },\n        { title: \"Diversi\u00f3n con Funciones\",   anchor: \"diversion-con-funciones\" },\n          { title: \"Quiz\",                anchor: \"Quiz\" },\n        { title: \"Ejercicios\",                anchor: \"ejercicios-cap2\" },\n      ]\n    },\n    {\n      title: \"Variables\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/variables\",\n      sections: [\n        { title: \"C\u00f3digo legado: c\u00f3digo sin var\",       anchor: \"codigo-sin-var\" },\n        { title: \"Cuidados con literales y variables\",  anchor: \"literales-variables\" },\n        { title: \"N\u00fameros M\u00e1gicos\",                     anchor: \"numeros-magicos\" },\n        { title: \"Reasignaciones\",                      anchor: \"reasignaciones\" },\n        { title: \"Misi\u00f3n secundaria: Casting\",          anchor: \"casting\" },\n        { title: \"Quiz\",          anchor: \"Quiz\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicios-cap3\" },\n      ]\n    },\n    {\n      title: \"String y StringBuilder\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/string-y-stringbuilder\",\n      sections: [\n          \n          { title: \"M\u00e9todos Destacados de String\",       anchor: \"metodos-destacados\" },\n        { title: \"String Format\",  anchor: \"string-format\" },\n        { title: \"StringBuilder\",                     anchor: \"stringbuilder\" },\n        { title: \"Misi\u00f3n secundaria: Inmutabilidad\",                      anchor: \"inmutabilidad\" },\n        { title: \"Quiz\",          anchor: \"quiz\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicios-cap4\" },\n        ]\n    },\n    {\n      title: \"Programas en Java\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/programas-en-java\",\n      sections: [     \n          { title: \"Paquetes\",       anchor: \"paquetes\" },\n        { title: \"Importaciones\",  anchor: \"importaciones\" },\n        { title: \"Importaciones Static\",                     anchor: \"importaciones-static\" },\n        { title: \"Constantes de Clase\",                      anchor: \"constantes-clase\" },\n        { title: \"Especificaciones\",                      anchor: \"especificaciones\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicios-cap5\" },\n        ]\n    },\n    {\n      title: \"Ciclos\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/ciclos\",\n      sections: [\n           { title: \"Operadores compuestos\",       anchor: \"operadores -compuestos\" },\n        { title: \"Ciclos For\",  anchor: \"ciclos-for\" },\n        { title: \"Strings\",                     anchor: \"strings\" },\n        { title: \"Ciclos For vs Ciclos While\",                      anchor: \"ciclosfor-cicloswhile\" },\n        { title: \"Ciclos Anidados\",                      anchor: \"ciclos-anidados\" },\n        { title: \"Strings de m\u00faltiples l\u00edneas\",                      anchor: \"strings-multipleslineas\" },\n         { title: \"Ciclos Infinitos\",                      anchor: \"ciclos-infinitos\" },\n          { title: \"Logs\",                          anchor: \"logs\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicios-cap6\" },\n        ]\n    },\n    {\n      title: \"Condicionales\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/condicionales\",\n      sections: [\n          \n           { title: \"Las muchas formas de switch\",       anchor: \"muchasformas\" },\n        { title: \"Las muchas formas de if\",  anchor: \"formas-if\" },\n        { title: \"Flujos de ejecuci\u00f3n con condicionales\",                     anchor: \"ejecuci\u00f3ncondicionales\" },\n        { title: \"Orden de condiciones\",                      anchor: \"condiciones\" },\n        { title: \"Switch vs If\",                      anchor: \"switch\" },\n        { title: \"m\u00faltiples retornos en una funci\u00f3n\",                      anchor: \"retornosfunci\u00f3n\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicios-cap7\" },\n        ]\n    },\n    {\n      title: \"Arreglos\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/arreglos\",\n      sections: [\n          { title: \"Arreglos como Par\u00e1metros\",       anchor: \"Comoparametros\" },\n        { title: \"Mutabilidad en los arreglos\",  anchor: \"mutabilidad\" },\n        { title: \"Par\u00e1metros de salida\",                     anchor: \"parametrossalida\" },\n        { title: \"Arreglos como valores de retorno\",                      anchor: \"arreglos-retorno\" },\n        { title: \"Valores predeterminados\",                      anchor: \"valores-predeterminados\" },\n        { title: \"Arreglos Multidimensionales\",                      anchor: \"a-multidimensionales\" },\n        { title: \"Copiar una matriz\",                      anchor: \"copiar-matriz\" },\n        { title: \"Iteraciones\",                      anchor: \"iteraciones\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicios-cap8\" },\n          ]\n    },\n    {\n      title: \"Miscel\u00e1nea de Ejercicios\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/miscelanea-de-ejercicios\/\",\n      sections: []\n    },\n    {\n      title: \"Tipos de Datos\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/tipos-de-datos\/\",\n      sections: [\n           { title: \"M\u00e9todos no accesores\",       anchor: \"metodosaccesores\" },\n        { title: \"Estatico vs No- Estatico\",  anchor: \"estatico\" },\n        { title: \"Igualdad\",                     anchor: \"igualdad\" },\n        { title: \"Implementaci\u00f3n por defecto de una clase\",                      anchor: \"implementacionclase\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicioscap9\" },\n        ]\n    },\n    {\n      title: \"Constructores\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/constructores\/\",\n      sections: [\n           { title: \"M\u00faltiples Constructores\",       anchor: \"multiplesconstructores\" },\n        { title: \"F\u00e1bricas Est\u00e1ticas\",  anchor: \"fabricasestaticas\" },\n        { title: \"Java Beans\",                     anchor: \"javabeans\" },\n        { title: \"Constructores Con Visibilidad por Defecto\",                      anchor: \"constructoresdefecto\" },\n         { title: \"Side Quest: Builders\",                      anchor: \"sidequestbuilders\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicioscap11\" },\n        ]\n    },\n    {\n      title: \"Referencias y Null\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/referencias-y-null\/\",\n      sections: [\n                  { title: \"Pasar por valor\",       anchor: \"pasarporvalor\" },\n        { title: \"NULL\",  anchor: \"null\" },\n        { title: \"Valores Nulos\",                     anchor: \"valoresnulos\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicioscap12\" },\n        ]\n    },\n    {\n      title: \"Enums\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/enums\/\",\n      sections: [\n           { title: \"Metodos y Atributos\",       anchor: \"metodosyatributos\" },\n        { title: \"Sobreescritura de M\u00e9todos por Constante\",  anchor: \"sobreescrituraconstante\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicioscapenums\" },\n        ]\n    },\n    {\n      title: \"Inmutabilidad\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/inmutabilidad\/\",\n      sections: [\n           { title: \"Mutabilidad en el interior\",       anchor: \"mutabilidadinterior\" },\n        { title: \"Withers\",  anchor: \"withers\" },\n        { title: \"Ejercicios\",                          anchor: \"ejerciciopuzzle\" },\n        ]\n    },\n    {\n      title: \"Manejo de Errores\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/manejo-de-errores\/\",\n      sections: [\n          { title: \"Estrategia de Manejo de Errores\",       anchor: \"estrategiaerrores\" },\n        { title: \"El usuario final no debe ver un stacktrace\",  anchor: \"stacktrace\" },\n        { title: \"Cambios en el C\u00f3digo\",                     anchor: \"cambiosc\u00f3digo\" },\n        { title: \"Mensajes de Error\",                      anchor: \"mensajeserror\" },\n         { title: \"Librer\u00eda de Validaciones\",                      anchor: \"librer\u00edavalidaciones\" },\n        ]\n    }\n  ];\n\n  \/* \u2500\u2500 Styles \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  const CSS = `\n    #cn-toggle {\n      position: fixed;\n      bottom: 24px;\n      left: 24px;\n      width: clamp(44px, 6vw, 100px);\n      height: clamp(44px, 6vw, 100px);\n      border-radius: 50%;\n      background: #fff;\n      border: 1px solid #d0d0d0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      cursor: pointer;\n      z-index: 9000;\n      box-shadow: 0 2px 8px rgba(0,0,0,.12);\n      transition: background .15s;\n      padding: 0;\n    }\n    #cn-toggle:hover { background: #f5f5f5; }\n    #cn-toggle svg {\n      color: black;\n      display: block;\n      width: clamp(18px, 2.4vw, 40px);\n      height: clamp(18px, 2.4vw, 40px);\n    }\n\n@media (prefers-color-scheme: dark) {\n#cn-toggle { background: #2a2a2a; border-color: #444; }\n#cn-toggle:hover { background: #333; }\n}\n\n    #cn-panel {\n      position: fixed;\n      bottom: calc(clamp(44px, 6vw, 100px) + 36px);\n      left: 24px;\n      width: 270px;\n      max-height: 72vh;\n      overflow-y: auto;\n      background: #fff;\n      border: 1px solid #d0d0d0;\n      border-radius: 12px;\n      padding: 10px 0;\n      z-index: 8999;\n      box-shadow: 0 4px 16px rgba(0,0,0,.10);\n      display: none;\n      box-sizing: border-box;\n      font-family: inherit;\n    }\n    #cn-panel.cn-open { display: block; }\n\n    @media (prefers-color-scheme: dark) {\n      #cn-panel { background: #1e1e1e; border-color: #444; box-shadow: 0 4px 16px rgba(0,0,0,.4); }\n    }\n\n    .cn-header {\n      font-size: 11px;\n      font-weight: 600;\n      letter-spacing: .07em;\n      text-transform: uppercase;\n      color: #999;\n      padding: 0 14px 8px;\n      border-bottom: 1px solid #eee;\n      margin-bottom: 4px;\n    }\n    @media (prefers-color-scheme: dark) {\n      .cn-header { color: #666; border-color: #333; }\n    }\n\n    .cn-chapter {\n      display: flex;\n      align-items: center;\n    }\n    .cn-chapter-link {\n      flex: 1;\n      padding: 7px 6px 7px 14px;\n      font-size: 13.5px;\n      line-height: 1.35;\n      color: #222;\n      text-decoration: none;\n      display: block;\n    }\n    .cn-chapter-link:hover { color: #0066cc; }\n    .cn-chapter-link.cn-active {\n      font-weight: 600;\n      color: #0066cc;\n    }\n    @media (prefers-color-scheme: dark) {\n      .cn-chapter-link { color: #ddd; }\n      .cn-chapter-link:hover, .cn-chapter-link.cn-active { color: #5aacff; }\n    }\n\n    .cn-expand-btn {\n      width: 30px;\n      height: 30px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      cursor: pointer;\n      color: #bbb;\n      border-radius: 6px;\n      margin-right: 8px;\n      flex-shrink: 0;\n      background: none;\n      border: none;\n      padding: 0;\n      transition: color .15s, background .15s;\n    }\n    .cn-expand-btn:hover { color: #555; background: #f0f0f0; }\n    .cn-expand-btn svg { transition: transform .2s; display: block; }\n    .cn-expand-btn.cn-open svg { transform: rotate(90deg); }\n\n    @media (prefers-color-scheme: dark) {\n      .cn-expand-btn { color: #555; }\n      .cn-expand-btn:hover { color: #aaa; background: #2e2e2e; }\n    }\n\n    .cn-section-list {\n      display: none;\n      padding: 2px 8px 6px 28px;\n      border-bottom: 1px solid #f0f0f0;\n      margin-bottom: 2px;\n    }\n    .cn-section-list.cn-open { display: block; }\n\n    @media (prefers-color-scheme: dark) {\n      .cn-section-list { border-color: #2a2a2a; }\n    }\n\n    .cn-section-link {\n      display: block;\n      padding: 4px 0;\n      font-size: 12.5px;\n      line-height: 1.4;\n      color: #666;\n      text-decoration: none;\n    }\n    .cn-section-link:hover { color: #0066cc; }\n\n    @media (prefers-color-scheme: dark) {\n      .cn-section-link { color: #888; }\n      .cn-section-link:hover { color: #5aacff; }\n    }\n  `;\n\n  \/* \u2500\u2500 SVG icons \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function iconMenu() {\n    return `<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n      stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n      <line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\"\/>\n      <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\"\/>\n      <line x1=\"4\" y1=\"18\" x2=\"20\" y2=\"18\"\/>\n    <\/svg>`;\n  }\n\n  function iconClose() {\n    return `<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n      stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n      <line x1=\"5\" y1=\"5\" x2=\"19\" y2=\"19\"\/>\n      <line x1=\"19\" y1=\"5\" x2=\"5\" y2=\"19\"\/>\n    <\/svg>`;\n  }\n\n  function iconChevron() {\n    return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\n      stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n      <polyline points=\"9 18 15 12 9 6\"\/>\n    <\/svg>`;\n  }\n\n  \/* \u2500\u2500 Build UI \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\n  \/\/ Inject styles\n  const style = document.createElement(\"style\");\n  style.textContent = CSS;\n  document.head.appendChild(style);\n\n  \/\/ Build toggle button\n  const toggle = document.createElement(\"button\");\n  toggle.id = \"cn-toggle\";\n  toggle.setAttribute(\"aria-label\", \"Toggle navigation\");\n  toggle.innerHTML = iconMenu();\n\n  \/\/ Build panel\n  const panel = document.createElement(\"nav\");\n  panel.id = \"cn-panel\";\n  panel.setAttribute(\"aria-label\", \"Course navigation\");\n\n  const header = document.createElement(\"div\");\n  header.className = \"cn-header\";\n  header.textContent = \"Contenidos\";\n  panel.appendChild(header);\n\n  chapters.forEach(function (chapter, idx) {\n    const isActive = activeIndex !== undefined && idx === activeIndex;\n    const hasSections = chapter.sections && chapter.sections.length > 0;\n\n    \/\/ Chapter row\n    const row = document.createElement(\"div\");\n    row.className = \"cn-chapter\";\n\n    const link = document.createElement(\"a\");\n    link.className = \"cn-chapter-link\" + (isActive ? \" cn-active\" : \"\");\n    link.href = chapter.url;\n    link.textContent = chapter.title;\n    row.appendChild(link);\n\n    if (hasSections) {\n      \/\/ Expand button\n      const btn = document.createElement(\"button\");\n      btn.className = \"cn-expand-btn\" + (isActive ? \" cn-open\" : \"\");\n      btn.setAttribute(\"aria-label\", isActive ? \"Hide sections\" : \"Show sections\");\n      btn.innerHTML = iconChevron();\n      row.appendChild(btn);\n\n      \/\/ Section list\n      const sectionList = document.createElement(\"div\");\n      sectionList.className = \"cn-section-list\" + (isActive ? \" cn-open\" : \"\");\n\n      chapter.sections.forEach(function (section) {\n        const sLink = document.createElement(\"a\");\n        sLink.className = \"cn-section-link\";\n        sLink.href = isActive\n          ? \"#\" + section.anchor\n          : chapter.url + \"#\" + section.anchor;\n        sLink.textContent = section.title;\n        sectionList.appendChild(sLink);\n      });\n\n      btn.addEventListener(\"click\", function () {\n        const isOpen = sectionList.classList.contains(\"cn-open\");\n\n        \/\/ Close all section lists and reset all expand buttons\n        panel.querySelectorAll(\".cn-section-list\").forEach(function (list) {\n          list.classList.remove(\"cn-open\");\n        });\n        panel.querySelectorAll(\".cn-expand-btn\").forEach(function (b) {\n          b.classList.remove(\"cn-open\");\n          b.setAttribute(\"aria-label\", \"Show sections\");\n        });\n\n        \/\/ If it wasn't open before, open it now (clicking an open chapter just closes it)\n        if (!isOpen) {\n          sectionList.classList.add(\"cn-open\");\n          btn.classList.add(\"cn-open\");\n          btn.setAttribute(\"aria-label\", \"Hide sections\");\n        }\n      });\n\n      panel.appendChild(row);\n      panel.appendChild(sectionList);\n    } else {\n      panel.appendChild(row);\n    }\n  });\n\n  toggle.addEventListener(\"click\", function (e) {\n    e.stopPropagation();\n    const open = panel.classList.toggle(\"cn-open\");\n    toggle.innerHTML = open ? iconClose() : iconMenu();\n    toggle.setAttribute(\"aria-label\", open ? \"Close navigation\" : \"Open navigation\");\n  });\n\n  document.addEventListener(\"click\", function (e) {\n    if (!panel.contains(e.target) && !toggle.contains(e.target)) {\n      panel.classList.remove(\"cn-open\");\n      toggle.innerHTML = iconMenu();\n      toggle.setAttribute(\"aria-label\", \"Open navigation\");\n    }\n  });\n\n  document.body.appendChild(toggle);\n  document.body.appendChild(panel);\n}\n\n  \n    initChapterNav();\n  <\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Programas en Java C\u00f3digo 01 &#8211; Hola Mundo! Organizado en un proyecto Javapublic class Saludos { public static String general() [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":315,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-681","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/pages\/681","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/comments?post=681"}],"version-history":[{"count":34,"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/pages\/681\/revisions"}],"predecessor-version":[{"id":2047,"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/pages\/681\/revisions\/2047"}],"up":[{"embeddable":true,"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/pages\/315"}],"wp:attachment":[{"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/media?parent=681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}