1. java-hell.de
  2. Temas
  3. Strings y switch
Tema 7 de 11

Aprende Strings y switch en Java – Ejercicios online

Por qué == con Strings te va a morder algún día y equals() no: aquí aprendes a trabajar con texto y a librarte de largas cadenas de if-else con switch.

Los ejercicios

Lo que aprenderás en este tema

  1. Longitud de un String
  2. Comparar Strings
  3. Switch
Ejercicio 1 de 3

Longitud de un String

Los Strings traen métodos muy prácticos. El más sencillo: .length()

String texto = "Hola";
IO.println(texto.length()); // 4

Ojo: en los Strings es .length() con paréntesis; en los arrays es .length sin ellos.

Sustituye ??? para imprimir la longitud de la palabra.

Código inicial
void main() {
    String palabra = "Desarrollador";
    IO.println(???);
}
Contexto
Métodos útiles de String

Los Strings tienen un montón de métodos integrados: .toUpperCase(), .toLowerCase(), .substring(inicio, fin), .indexOf("texto"), .replace("viejo", "nuevo"), .trim() (quita los espacios al principio y al final), .contains("texto"), .startsWith("prefijo").

Como los Strings son inmutables, todos estos métodos devuelven una cadena nueva: la original no cambia.

Ejercicio 2 de 3

Comparar Strings

Trampa clásica de Java: los Strings no se comparan con ==, sino con .equals():

if (nombre.equals("Ana")) {
    // ...
}

Sustituye ??? por la comparación correcta.

Código inicial
void main() {
    String respuesta = "sí";

    if (???) {
        IO.println("¡Vamos!");
    } else {
        IO.println("Cancelado");
    }
}
Contexto
El String Pool

Java tiene un String Pool: una caché para los literales de cadena. Si escribes "hola" dos veces en tu código, ambos apuntan al mismo objeto del pool. Por eso == funciona por casualidad cuando comparas dos literales, pero eso es suerte, no una regla en la que puedas confiar.

Los Strings creados en tiempo de ejecución (por ejemplo con new String("hola"), por concatenación o a partir de lo que escribe el usuario) no acaban en el pool. Así que: usa siempre .equals().

Ejercicio 3 de 3

Switch

Cuando tienes una cadena larga de if-else if, un switch se lee mucho mejor:

switch (valor) {
    case 1: ...; break;
    case 2: ...; break;
    default: ...;
}

Importante: no olvides el break;: si no, Java sigue de largo y ejecuta también el siguiente case.

Añade el case que falta para el miércoles.

Código inicial
void main() {
    int dia = 3;

    switch (dia) {
        case 1: IO.println("Lunes"); break;
        case 2: IO.println("Martes"); break;
        // Añade el case 3 para "Miércoles"
        default: IO.println("Otro día");
    }
}
Contexto
Expresiones switch (desde Java 14)

El Java moderno tiene una variante de switch más elegante con ->:

String dia = switch (nr) { case 1 -> "Lunes"; case 2 -> "Martes"; default -> "Otro"; };

Ventajas: no necesitas break, puede devolver un valor directamente y el compilador se niega a compilarla si falta algún caso (una expresión switch tiene que ser exhaustiva). Aun así, el switch clásico sigue existiendo.

Basta de leer. Te toca.

En el tutorial escribes el código tú mismo, pulsas Ejecutar y ves al instante si tu programa funciona. Sin JDK, sin IDE, sin rollos.

Practicar Strings y switch en tu navegador