Cadenas#
Introducción#
Los arreglos y las cadenas son fundamentales en Java para organizar y manipular datos de manera eficiente. En esta clase, exploraremos cómo declarar, inicializar y manejar arreglos, tanto unidimensionales como multidimensionales, y cómo trabajar con cadenas, que son esenciales en el procesamiento de texto. También veremos aplicaciones prácticas y algoritmos de búsqueda en estas estructuras, combinando teoría y ejercicios prácticos para fortalecer la comprensión y la habilidad de resolver problemas en el desarrollo de software.
Cadenas (Strings)#
Las cadenas (String
) son secuencias de caracteres que se tratan como objetos en Java. A diferencia de los arreglos, las cadenas son inmutables, lo que significa que no se pueden modificar una vez creadas.

Figura 8 Here is my figure caption!#
Creación de Cadenas
// Declaración e inicialización de una cadena
String saludo = "Hello, World!";
// Imprimir cadena completa
System.out.println(saludo);
// Acceso a caracteres individuales
int index = 5;
System.out.println("The index %d of the phrase '%s' is '%c'.".formatted(index, saludo, saludo.charAt(index))); // Imprime 'H'
Hello, World!
The index 5 of the phrase 'Hello, World!' is ','.
Cadenas como Arreglos
Una cadena puede ser vista como un arreglo de caracteres.
char[] caracteres = saludo.toCharArray();
System.out.println(caracteres[1]); // Imprime 'o'
// Imprime la letra W
e
Ingresar Variables/Texto
import java.util.Scanner;
// Ingresar una sola variable
//Scanner input_name = new Scanner(System.in);
System.out.println("Enter a name: ");
String name = "Sebastian";//input_name.nextLine();
System.out.println("You entered the name: "+name);
// Ingresando un entero
// int integer1 = input.nextInt();
int integer1 = 56;
System.out.println("The number you entered is: "+integer1 );
Enter a name:
You entered the name: Sebastian
The number you entered is: 56
// Ingresar un caracter
System.out.print("Enter a character: ");
// Scanner input = new Scanner(System.in);
// String s = input.nextLine();
String s = "a";
char ch = s.charAt(0);
System.out.println("\nThe character entered is " + ch);
// Agrega un código que pida una string y un número y entregue
// el carácter de la string en el indice del número
Enter a character:
The character entered is a
¿Se puede ingresar un float o double? SI
¡Siempre se puede convertir (cast or casting) una variable de un tipo a otro!
// String to double
//String numero = input.nextLine();
String numero = "125.523213";
double double1 = Double.parseDouble(numero);
System.out.println("The number you entered in double is: "+double1);
// String to float
// String float1 = input.nextLine();
float float1 = Float.parseFloat(numero);
System.out.println("The number you entered in float is: "+float1 );
The number you entered in double is: 125.523213
The number you entered in float is: 125.52322
// Ingresar varias variables al tiempo (palabras)
Scanner input = new Scanner(System.in);
System.out.print("Enter three words separated by spaces: ");
// String s1 = input.next();
// String s2 = input.next();
// String s3 = input.next();
String s1 = "1", s2 = "1", s3 = "1";
System.out.println("%nYou entered %s %s %s %n".formatted(s1, s2, s3));
System.out.println(" s1 is " + s1);
System.out.println(" s2 is " + s2);
System.out.println(" s3 is " + s3);
Enter three words separated by spaces:
You entered 1 1 1
s1 is 1
s2 is 1
s3 is 1
Operaciones Con Cadenas
// Longitud de una cadena
String message = "Welcome to Java";
System.out.println("The length of " + message + " is "+ message.length());
The length of Welcome to Java is 15
// Unión de cadenas usando el operador sumar (+)
String message1 = "Welcome to Java!";
String message2 = "Data structures course.";
System.out.println(message1+name+message2);
System.out.println("%s, %s. This is the %s".formatted(message1, name, message2));
Welcome to Java!SebastianData structures course.
Welcome to Java!, Sebastian. This is the Data structures course.
// Mezclando números y cadenas
int i = 1, j=2;
double z = 3.13;
float w = 3.123123123F;
System.out.println("Selected numbers "+i+j);
System.out.println("Selected numbers "+(i+j));
System.out.println("Selected numbers "+z);
System.out.println("Selected numbers "+w);
Selected numbers 12
Selected numbers 3
Selected numbers 3.13
Selected numbers 3.1231232
// Unión de cadenas usando el método concatenar (concat)
String total_text = message1.concat(name).concat(message2);
System.out.println(total_text);
// Unión de cadenas usando el operador +=
total_text += " System Engineering, 2024.";
System.out.println(total_text);
Welcome to Java!SebastianData structures course.
Welcome to Java!SebastianData structures course. System Engineering, 2024.
// Operadores especiales
System.out.println("The character \\ is called backslash.");
System.out.println("The character \' is called single quote.");
System.out.println("The character \" is called double quote.\n");
System.out.println("Selected \t numbers"); // /t: Tab
System.out.println("Selected \n numbers"); // /n: New Line
System.out.println("Sel\bected numbers"); // /b: Backspace
System.out.println("Sel\rected numbers"); // /r: Carriage Return
The character \ is called backslash.
The character ' is called single quote.
The character " is called double quote.
Selected numbers
Selected
numbers
Selected numbers
Sel
ected numbers
Las clases suelen ya tener definidos algunos métodos, para ello revisa las funciones de la clase String.java o consulta cualquiera de los siguientes enlaces:
String long_name = " sebas. ";
System.out.println(long_name);
System.out.println(long_name.trim());
System.out.println(long_name.repeat(3));
System.out.println(long_name.isEmpty());
System.out.println(long_name.indexOf("e"));
// Prueba 5 métodos más de la clase String
sebas.
sebas.
sebas. sebas. sebas.
false
6
// Comparing string or checking substrings
String s1 = "Welcome to Java", s2 = "Welcome to java", s3 = "Welcome to C++";
System.out.println(s1.contains("Java"));
System.out.println(s1.equalsIgnoreCase(s2)); // true
System.out.println(s1.equals(s3)); // false
true
true
false

Figura 9 Here is my figure caption!#
// Substring indexes
String message = "Welcome to Java";
String sub_message = message.substring(8) + " HTML";
System.out.println(message);
System.out.println(message.indexOf("me"));
System.out.println(message.lastIndexOf(" "));
System.out.println();
// Substring
int k = message.indexOf(" ");
String firstName = message.substring(0, k);
String lastName = message.substring(k + 1);
System.out.println(firstName);
System.out.println(lastName);
Welcome to Java
5
10
Welcome
to Java
Busquedas#
Búsqueda de Subcadenas: Busca una subcadena dentro de una cadena más grande.
public static int buscarSubcadena(String cadena, String subcadena) {
return cadena.indexOf(subcadena); // Retorna el índice de la subcadena o -1 si no se encuentra
}
// Prueba el método
Recorrido de Caracteres: Similar a la búsqueda lineal en arreglos, pero aplicado a cada carácter de una cadena.
public static boolean contieneCaracter(String cadena, char c) {
for (int i = 0; i < cadena.length(); i++) {
if (cadena.charAt(i) == c) {
return true;
}
}
return false;
}
// Prueba el método
Aplicaciones#
Procesamiento de Texto: Las cadenas se utilizan para manipular y procesar texto, como en la construcción de mensajes, análisis de texto, o generación de informes.
Almacenamiento de Datos: Cadenas se utilizan en aplicaciones que requieren manipulación de texto, como bases de datos, procesadores de texto y lenguajes de programación.
Ejemplo#
import java.util.Scanner;
public class OrderTwoCities {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// Prompt the user to enter two cities
System.out.print("Enter the first city: ");
// String city1 = input.nextLine();
String city1 = "Bogota";
System.out.print("\nEnter the second city: ");
String city2 = "Cale";
// String city2 = input.nextLine();
if (city1.compareTo(city2) < 0){
System.out.println("\nThe cities in alphabetical order are: " + city1 + " " + city2);}
else{
System.out.println("\nThe cities in alphabetical order are: " + city2 + " " + city1);}
}
}
// Prueba la clase
Cambia la anterior clase para que las ciudades no sean ingresadas por el usuario si no que sean pasadas a al método utilizando el vector args
// Escribe el código aquí
Puedes encontrar más información en el capítulo 4 del libro guia, Y. Daniel Liang.
Conclusión#
En esta clase, los estudiantes han aprendido sobre la estructura y manipulación de arreglos y cadenas en Java, tanto en una como en varias dimensiones. Estos conceptos son fundamentales para la programación en Java, ya que permiten organizar y procesar grandes cantidades de datos de manera eficiente. A través de aplicaciones prácticas y algoritmos de búsqueda, los estudiantes han adquirido las habilidades necesarias para aplicar estos conceptos en la resolución de problemas reales.
Ejercicio#
Taller 4
Elige un tema de tu interés, como una película, un deporte, un videojuego, una banda musical, etc. Con base en ese tema, desarrollarás un programa en Java que utilice arreglos y cadenas unidimensionales para realizar una tarea relacionada.
Instrucciones
Definición del Tema:
Escoge un tema que te apasione o te interese. Por ejemplo, si te gusta el cine, podrías trabajar con una lista de tus películas favoritas; si prefieres los deportes, podrías utilizar los nombres de los equipos de fútbol o los jugadores.
Diseño del Programa:
Arreglo de Cadenas: Crea un arreglo unidimensional para almacenar una lista de nombres relacionados con tu tema (por ejemplo, títulos de películas, nombres de jugadores, etc.).
Arreglo de Enteros: Si es relevante para tu tema, crea un segundo arreglo para almacenar números asociados a cada elemento del primer arreglo (por ejemplo, el año de lanzamiento de cada película o las puntuaciones de los jugadores).
Si requieres crear más arreglos o variables eres libre de agregar el código que deseas y creas pertinente.
Funcionalidades del Programa:
Buscar en el Arreglo: Implementa un método que permita buscar un elemento en el arreglo de cadenas y muestre información relacionada (por ejemplo, buscar una película por nombre y mostrar su año de lanzamiento).
Agregar y Eliminar Elementos: Crea funcionalidades que permitan al usuario agregar nuevos elementos al arreglo o eliminar elementos existentes.
Mostrar el Contenido: Implementa un método para mostrar todos los elementos del arreglo y su información asociada.
Desarrollo del Código:
Escribe el código en Java para implementar las funcionalidades descritas. Asegúrate de manejar correctamente los índices y las posibles excepciones (como intentar acceder a un índice fuera de los límites del arreglo).
Prueba del Programa:
Prueba el programa con diferentes entradas para asegurarte de que todas las funcionalidades funcionan correctamente.
Entregables
Código fuente en Java (o notebook) que implemente el ejercicio de acuerdo con el tema elegido.
Un documento breve que describa el tema seleccionado, las funcionalidades implementadas, y cómo el programa maneja los datos. Esto se puede hacer en el notebook fácilmente o comentando los códigos.
(Opcional) Resolver alguno de los siguientes problemas utilizando clases, métodos, arreglos, cadenas, etc.
Truco
Pueden implentar todo desde cero pero sería un trabajo arduo, lo mejor es que utilicen las clases Array
o ArrayList
que ya tiene todos los métodos implementados.
Advertencia
Pueden trabajar en grupo pero NO deben tener el mismo tema, como todos tenemos gustos diferentes todos tendremos códigos diferentes.