es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Quiero imprimir un mensaje de error si una variable de tipo String contiene números.

Estoy haciendo un ejercicio donde necesito aceptar números en una variable de cadena y dividirlos por 10, y no se me permite usar .nextInt(); o Integer.ParseInt(); Quiero imprimir un mensaje de error si una variable de cadena contiene letras. Ahora mismo, el mensaje de error funciona si solo ingreso letras en la variable de cadena, pero si lo mezclo con letras y números, el mensaje de error no funciona. ¿Qué puedo hacer para resolver este problema?

Código hasta ahora:

import java.util.regex.*;
import java.util.Scanner;

public class Exercise8 {
private static Scanner input;

public static void main(String[] args) {
    System.out.println("Ingresa algunos números");

    input = new Scanner(System.in);
    double divide = 10;
    int sum = 0;
    int x = 0;
    int j = 0;

    while (x < 1) {
        String strNumbers = input.next();

        if (!Pattern.matches("[a-zA-Z]+", strNumbers)) {
            ++x;
            for (int i = strNumbers.length() - 1; i >= 0; i--) {
                sum += Math.pow(10, j) * (strNumbers.charAt(i) - '0');
                j++;    
            }   

            System.out.println("Tus números: " + sum);
            System.out.println("Tus números divididos por 10: " + sum/divide);
        }

        else {
            System.out.println("Inválido");
        }
    }
}

}

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para resolver el problema actual, puede ser necesario cambiar el patrón de expresión regular utilizado para verificar si la variable de cadena contiene solo letras. El patrón actual [a-zA-Z]+ verifica una o más ocurrencias de letras únicamente. Puede modificar el patrón para verificar cualquier carácter no numérico utilizando el patrón [^\d]+. Este patrón verifica una o más ocurrencias de cualquier carácter no numérico.

    El código actualizado para la validación de entrada será:

    if (!Pattern.matches("[^\\d]+", strNumbers)) {
        // Resto del código
    } else {
        System.out.println("Inválido");
    }
    

    Con el patrón actualizado, si una variable de cadena contiene una combinación de letras y números, aún se considerará inválida y se imprimirá el mensaje de error.

Comments are closed.