jueves, 9 de julio de 2026

Encontrar la primera posición de un carácter x de una cadena en Java

Código del ejercicio:

package ejercicio;

import java.util.Scanner;

public class Ejercicio {

    public static void main(String[] args) {
        int i = 0, p = 0, sw = 0;
        Scanner sc = new Scanner(System.in);
        System.out.print("Ingrese un texto: ");
        String s = sc.nextLine();
        System.out.print("Ingrese un carácter: ");
        char l = sc.nextLine().charAt(0);
        while(i < s.length() && sw == 0){
            if(s.charAt(i) == l){
                p = i;
                sw = 1;
            }
            i++;
        }
        System.out.print("El carácter " + l + " está en la posición " + p);
    }

}

Definición de los códigos del ejercicio:

import java.util.Scanner; --> Importación explícita de Scanner.
Scanner sc = new Scanner(System.in); --> objeto de Scanner con nombre sc.
Scanner --> clase Scanner nos permite ingresar datos por teclado.
new --> palabra reservada que instancia un objeto de la clase Scanner.
System.in --> parámetro que indica de donde proceden los datos, en este caso del teclado.
System.out.print() --> imprime el texto en la consola y el cursor permanece al final del texto en la consola.
int --> dato entero de 32 bits.
String --> dato de tipo cadena de texto.
nextLine() --> se utiliza para obtener la entrada del usuario.
charAt() --> devuelve el carácter en el índice especificado en una cadena. El índice del primer carácter es 0, el segundo carácter es 1 y así sucesivamente.
while --> el ciclo while recorre un bloque de código siempre que una condición específica sea verdadera.
< --> el operador menor que ( < ) devuelve true si el operando izquierdo es menor que el operando derecho.
length() --> devuelve la longitud de una cadena.
&& --> el operador lógico AND ( && ) (conjunción lógica) para un conjunto de operandos booleanos será true si y solo si todos los operandos son true. De lo contrario será false.
== --> el operador de igualdad ( == ) regresa true si sus operandos son iguales, false en caso contrario.
!= --> el operador de desigualdad ( != ) comprueba si sus dos operandos no son iguales y devuelve un resultado booleano.
if --> use if para especificar un bloque de código que se ejecutará, si una condición especificada es verdadera.
else --> use else para especificar un bloque de código a ejecutar, si la misma condición es falsa.
charAt() --> devuelve el carácter en el índice especificado en una cadena. El índice del primer carácter es 0, el segundo carácter es 1 y así sucesivamente.
++ --> el operador de incremento ( ++ ) incrementa (suma uno a) su operando y devuelve un valor.
+ --> el operador ( + ) concatena variables de cadena.

Explicación del Código:

Este programa solicita al usuario un texto y un carácter. Luego recorre la cadena desde el inicio hasta encontrar la primera aparición del carácter ingresado. Finalmente muestra la posición donde fue encontrado.

Explicación de cada parte del código

Código Explicación sencilla
int i = 0, p = 0, sw = 0; Se crean tres variables:
  • i: sirve para recorrer cada posición del texto.
  • p: guarda la posición donde se encuentra el carácter.
  • sw: funciona como un interruptor para detener la búsqueda cuando el carácter ya fue encontrado.
Scanner sc = new Scanner(System.in); Crea el objeto que permite leer datos escritos por el usuario.
System.out.print("Ingrese un texto: "); Muestra un mensaje solicitando que el usuario escriba un texto.
String s = sc.nextLine(); Guarda el texto ingresado por el usuario en la variable s.
System.out.print("Ingrese un carácter: "); Solicita al usuario un carácter para buscar dentro del texto.
char l = sc.nextLine().charAt(0); Lee el carácter ingresado y guarda solamente el primer carácter escrito.
while(i < s.length() && sw == 0) Recorre el texto mientras no llegue al final y mientras el carácter aún no haya sido encontrado.
if(s.charAt(i) == l) Compara el carácter que está en la posición actual del texto con el carácter que busca el usuario.
p = i; Guarda la posición donde se encontró el carácter.
sw = 1; Indica que el carácter ya fue encontrado para detener el ciclo.
i++; Avanza a la siguiente posición del texto.
System.out.print(...) Muestra la posición donde se encontró el carácter.

Funcionamiento del algoritmo

  1. El usuario escribe un texto.
  2. El usuario escribe el carácter que desea buscar.
  3. El programa comienza a recorrer el texto desde la primera posición.
  4. En cada posición compara el carácter del texto con el carácter buscado.
  5. Cuando encuentra la primera coincidencia, guarda la posición.
  6. El ciclo termina inmediatamente.
  7. Finalmente se muestra la posición donde apareció el carácter.

Ejemplo

Ingrese un texto: Programación
Ingrese un carácter: g

Resultado:
El carácter g está en la posición 3

Resumen

El programa realiza una búsqueda secuencial sobre una cadena de texto. Recorre cada carácter desde el inicio y, al encontrar la primera coincidencia con el carácter ingresado, guarda su posición, detiene la búsqueda y muestra el resultado al usuario.

Código del ejercicio: Otra forma de hacer

package ejercicio;

import java.util.Scanner;

public class Ejercicio {

    public static void main(String[] args) {
        int i = 0;
        Scanner sc = new Scanner(System.in);
        System.out.print("Ingrese un texto: ");
        String s = sc.nextLine();
        System.out.print("Ingrese un carácter: ");
        char x = sc.nextLine().charAt(0);
        while(i < s.length()){
            if(s.charAt(i) != x){
                i++;
            }else{
                System.out.print("El carácter " + x + " está en la posición " + i);
                i = s.length();
            }
        }
    }

}

Definición de los códigos del ejercicio:

import java.util.Scanner; --> Importación explícita de Scanner.
Scanner sc = new Scanner(System.in); --> objeto de Scanner con nombre sc.
Scanner --> clase Scanner nos permite ingresar datos por teclado.
new --> palabra reservada que instancia un objeto de la clase Scanner.
System.in --> parámetro que indica de donde proceden los datos, en este caso del teclado.
System.out.print() --> imprime el texto en la consola y el cursor permanece al final del texto en la consola.
int --> dato entero de 32 bits.
String --> dato de tipo cadena de texto.
nextLine() --> se utiliza para obtener la entrada del usuario.
charAt() --> devuelve el carácter en el índice especificado en una cadena. El índice del primer carácter es 0, el segundo carácter es 1 y así sucesivamente.
while --> el ciclo while recorre un bloque de código siempre que una condición específica sea verdadera.
< --> el operador menor que ( < ) devuelve true si el operando izquierdo es menor que el operando derecho.
length() --> devuelve la longitud de una cadena.
&& --> el operador lógico AND ( && ) (conjunción lógica) para un conjunto de operandos booleanos será true si y solo si todos los operandos son true. De lo contrario será false.
== --> el operador de igualdad ( == ) regresa true si sus operandos son iguales, false en caso contrario.
!= --> el operador de desigualdad ( != ) comprueba si sus dos operandos no son iguales y devuelve un resultado booleano.
if --> use if para especificar un bloque de código que se ejecutará, si una condición especificada es verdadera.
else --> use else para especificar un bloque de código a ejecutar, si la misma condición es falsa.
charAt() --> devuelve el carácter en el índice especificado en una cadena. El índice del primer carácter es 0, el segundo carácter es 1 y así sucesivamente.
++ --> el operador de incremento ( ++ ) incrementa (suma uno a) su operando y devuelve un valor.
+ --> el operador ( + ) concatena variables de cadena.

Explicación del Código:

1. Declaración de la variable

int i = 0;

Se crea la variable i, que servirá para recorrer la cadena carácter por carácter. Comienza en 0, ya que la primera posición de una cadena en Java siempre es 0.

2. Crear el Scanner

Scanner sc = new Scanner(System.in);

Se crea un objeto Scanner para poder leer los datos que ingrese el usuario desde el teclado.

3. Leer el texto

System.out.print("Ingrese un texto: ");
String s = sc.nextLine();

Se solicita al usuario que escriba un texto y este se guarda en la variable s.

4. Leer el carácter

System.out.print("Ingrese un carácter: ");
char x = sc.nextLine().charAt(0);

Se pide un carácter al usuario y se obtiene únicamente el primer carácter escrito mediante charAt(0). Este carácter se almacena en la variable x.

5. Recorrer la cadena

while(i < s.length())

El ciclo while recorre toda la cadena mientras i sea menor que la cantidad de caracteres del texto.

6. Comparar cada carácter

if(s.charAt(i) != x)

Se obtiene el carácter que está en la posición i de la cadena y se compara con el carácter buscado.

  • Si son diferentes, continúa buscando.
  • Si son iguales, entra al bloque else.

7. Avanzar a la siguiente posición

i++;

Si el carácter aún no se encuentra, se incrementa la variable i para revisar la siguiente posición de la cadena.

8. Mostrar la posición encontrada

System.out.print("El carácter " + x + " está en la posición " + i);

Cuando el carácter coincide con el buscado, el programa muestra la posición donde aparece por primera vez.

9. Finalizar el ciclo

i = s.length();

Se asigna a i el tamaño de la cadena para que la condición del while deje de cumplirse y el ciclo termine inmediatamente.

Resumen

Este programa busca la primera aparición de un carácter dentro de un texto. Recorre la cadena desde el inicio, compara cada carácter con el carácter buscado y, cuando lo encuentra, muestra su posición y finaliza la búsqueda.

No hay comentarios.:

Publicar un comentario

Contar la cantidad de vocales que tiene una frase en Java

Código del ejercicio: package ejercicio; import java.util.Scanner; public class Ejercicio {     public static void mai...

Copyright ©2025 Ejercicios de programación. Todos los derechos reservados. ❤️