← Volver a los quizzesQuiz gratuito

Fundamentos de tipos y operaciones en Java

En este módulo aprenderás los conceptos clave que aparecen en el cuestionario de Programación sobre Java: lógica de años bisiestos, operadores aritméticos, manejo de argumentos en main ,…

10 preguntas~5 min
Fundamentos de tipos y operaciones en Java — Qwi
0 / 10
Puntuación: 0%
1

¿Cuál es la condición correcta para determinar si un año es bisiesto en Java?

2

Si se ejecuta el programa IntOps con los argumentos "1234" y "99", ¿cuál es el valor impreso para la operación módulo?

3

¿Qué salida produce el programa Cuadratica cuando se le pasan los argumentos "-3.0" y "2.0"?

4

En la concatenación de cadenas del ejemplo Ruler, ¿cuál es la longitud total de la cadena resultante impresa?

5

¿Cuál de las siguientes afirmaciones sobre la conversión automática (widening) en Java es verdadera?

6

Al generar un número entero aleatorio entre 0 y N‑1, ¿qué expresión garantiza que el valor sea siempre entero?

7

En el fragmento de código de Bisiesto, ¿qué error de nombre de variable impide compilar correctamente el programa?

8

Si se intenta ejecutar "java Cuadratica hello" ¿qué tipo de excepción se producirá?

9

¿Cuál es la diferencia principal entre la operación "add" en tipos int y double según el texto?

10

En el ejemplo de String concatenation, ¿qué operador se utiliza para unir cadenas?

Fundamentos de tipos y operaciones en Java

En este módulo aprenderás los conceptos clave que aparecen en el cuestionario de Programación sobre Java: lógica de años bisiestos, operadores aritméticos, manejo de argumentos en main, concatenación de cadenas, conversiones automáticas (widening), generación de números aleatorios, buenas prácticas de nombres de variables y manejo de excepciones. Cada sección incluye explicaciones detalladas, ejemplos de código y buenas prácticas para que puedas dominar estos temas y mejorar tu posicionamiento SEO al buscar información relacionada.

1. Determinar si un año es bisiesto

Un año es bisiesto cuando cumple la siguiente condición:

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
    // es bisiesto
}

Esta expresión combina dos reglas:

  • El año debe ser divisible por 4.
  • Si es divisible por 100, también debe ser divisible por 400.

La respuesta correcta del cuestionario era la segunda opción, que refleja exactamente esta lógica.

2. Operador módulo (%)

El operador módulo devuelve el resto de la división entera. En el programa IntOps se reciben dos argumentos: "1234" y "99". El cálculo que se realiza es:

int a = Integer.parseInt(args[0]); // 1234
int b = Integer.parseInt(args[1]); // 99
int modulo = a % b; // 1234 % 99 = 46

Por lo tanto, el valor impreso es 46. Este tipo de operación es útil para validar rangos, ciclos y algoritmos de hashing.

3. Resolviendo ecuaciones cuadráticas

El programa Cuadratica recibe los coeficientes a y b (el término c se asume 0). La fórmula para las raíces es:

double x1 = (-b + Math.sqrt(b*b - 4*a*c)) / (2*a);
double x2 = (-b - Math.sqrt(b*b - 4*a*c)) / (2*a);

Con los argumentos -3.0 y 2.0, la salida es:

1.0
2.0

Esto muestra cómo Java maneja los números de punto flotante y la función Math.sqrt. Si los argumentos no son numéricos, se lanzará una excepción (ver sección 7).

4. Concatenación de cadenas y longitud resultante

En el ejemplo Ruler se concatenan varias subcadenas para crear una regla visual. La longitud total de la cadena impresa es 31 caracteres. La cuenta se realiza sumando la longitud de cada fragmento:

  • "1234567890" → 10
  • "123456789" → 9
  • "12345678" → 8
  • "1234567" → 7

10 + 9 + 8 + 7 = 34, pero el programa elimina los últimos tres caracteres para alinear la regla, quedando 31.

5. Conversión automática (widening) en Java

Java permite conversiones implícitas de tipos más pequeños a tipos más grandes sin pérdida de precisión, siempre que la representación del valor sea compatible. La afirmación correcta es:

Un int puede convertirse implícitamente a double sin pérdida de precisión.

Ejemplo:

int i = 5;
double d = i; // conversión widening automática

Otras conversiones, como de double a int o de boolean a int, requieren casting explícito o no son permitidas.

6. Generación de números enteros aleatorios

Para obtener un entero aleatorio entre 0 y N‑1 se utiliza la expresión:

int aleatorio = (int)(Math.random() * N);

El método Math.random() devuelve un double en el rango [0.0, 1.0). Multiplicarlo por N y truncar con (int) garantiza que el resultado sea un entero dentro del rango deseado.

7. Buenas prácticas de nombres de variables

En el fragmento de código Bisiesto se cometió un error de tipografía: se usaron los nombres esBisieto y esBisiento en lugar de esBisiesto. Este tipo de error impide la compilación porque el compilador no reconoce la variable declarada.

Consejo:

  • Utiliza nombres descriptivos y consistentes.
  • Activa la opción -Xlint:all al compilar para detectar variables no usadas o mal escritas.
  • Apóyate en IDEs que resaltan errores de ortografía en identificadores.

8. Manejo de excepciones al pasar argumentos incorrectos

Si ejecutas java Cuadratica hello, el programa intentará convertir la cadena "hello" a double usando Double.parseDouble. Al no ser un número válido, se lanza una NumberFormatException. Esta excepción es una subclase de IllegalArgumentException y debe ser capturada para evitar que el programa termine abruptamente.

try {
    double a = Double.parseDouble(args[0]);
} catch (NumberFormatException e) {
    System.err.println("Error: el argumento no es un número válido.");
    System.exit(1);
}

Resumen y mejores prácticas

Los conceptos revisados son esenciales para cualquier desarrollador Java:

  • Años bisiestos: usar la condición correcta para evitar errores de calendario.
  • Operador módulo: útil para ciclos y validaciones.
  • Ecuaciones cuadráticas: manejo de Math.sqrt y validación de argumentos.
  • Concatenación de cadenas: conocer la longitud resultante ayuda en formatos de salida.
  • Widening: confiar en conversiones implícitas seguras.
  • Random: siempre castear a int después de multiplicar.
  • Nombres de variables: evitar errores tipográficos.
  • Excepciones: capturar NumberFormatException al parsear datos.

Dominar estos fundamentos te permitirá escribir código más robusto, legible y libre de errores comunes, mejorando tanto tu desempeño como la visibilidad de tus contenidos en buscadores.