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.

Cómo determinar cuántos caracteres hay en una cadena y si los caracteres son dígitos o no en Java.

Estoy trabajando en un proyecto de escaneo de información del cliente para la escuela. Actualmente estoy trabajando en la parte del número de teléfono. Necesito que el cliente ingrese su número de teléfono y debo detectar tantos errores como sea posible. Esto incluye: asegurarse de que sean todos dígitos, asegurarse de que sean diez dígitos, luego dividir en: <3 dígitos para el código de área>, <3 dígitos para la oficina central>, <4 dígitos para el código de estación>, y finalmente agregar guiones entre el código de área, la oficina central y el código de estación. ¿Hay alguna forma fácil de hacer esto? Aquí está mi código actual. Gracias de antemano.

System.out.println(DATA_DIV);
System.out.println("\nInformación del número de teléfono del cliente");
System.out.println("-----------------------------------\n");
System.out.println("Ingrese el número de teléfono:");

phoneNumber = uIn.next();

if (phoneNumber.matches("\\d+")) {

} 
else {
    Garbage = uIn.next();
    System.out.println("\nError en el tipo de datos: ingresaste (" + Garbage + ") como número de teléfono");
    System.out.println("El número de teléfono debe estar compuesto solo por números");
    System.out.println();
    System.out.println("Vuelva a ingresar el número de teléfono:");
    phoneNumber = uIn.next();
}
Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en Java y en java.util.Scanner, existen varias formas de detectar errores en la entrada del número de teléfono para tu proyecto de escáner de información del cliente.

    Primero, puedes utilizar el método .length() para verificar que la entrada tenga exactamente diez dígitos. Si no es así, puedes pedirle al usuario que vuelva a ingresar su número de teléfono.

    Segundo, puedes utilizar el método .matches() con una expresión regular para verificar que la entrada consista solo en dígitos. Ya tienes un patrón de regex para hacer esto (por ejemplo, "\\d+"), pero puedes agregar la verificación de la longitud de la siguiente manera: "\\d{10}". Esto garantizará que la entrada consista solo en dígitos y tenga exactamente diez dígitos.

    Para dividir el número de teléfono en sus partes componentes (es decir, el código de área, la oficina central y el código de estación), puedes utilizar el método .substring() para extraer las subcadenas apropiadas en función de sus posiciones en el número de teléfono ingresado. Por ejemplo, puedes usar "phoneNumber.substring(0, 3)" para obtener el código de área (suponiendo que sean los primeros tres dígitos del número de teléfono), "phoneNumber.substring(3, 6)" para obtener la oficina central y "phoneNumber.substring(6)" para obtener el código de estación.

    Finalmente, para agregar guiones entre estas subcadenas, puedes concatenarlas con el carácter "-" utilizando el operador +. Por ejemplo, puedes utilizar "areaCode + \"-\" + centralOffice + \"-\" + stationCode" para crear la cadena de número de teléfono formateada.

    Aquí tienes una versión actualizada de tu código que incorpora estas sugerencias:

    System.out.println(DATA_DIV);
    System.out.println("\nInformación del número de teléfono del cliente");
    System.out.println("-----------------------------------\n");
    System.out.println("Ingrese el número de teléfono:");
    
    String phoneNumber = uIn.next();
    
    while (!phoneNumber.matches("\\d{10}")) {
        System.out.println("\nError: El número de teléfono debe tener exactamente 10 dígitos");
        System.out.println("Vuelva a ingresar el número de teléfono:");
        phoneNumber = uIn.next();
    }
    
    if (phoneNumber.matches("\\d{10}")) {
        String areaCode = phoneNumber.substring(0, 3);
        String centralOffice = phoneNumber.substring(3, 6);
        String stationCode = phoneNumber.substring(6);
        String formattedPhoneNumber = areaCode + "-" + centralOffice + "-" + stationCode;
    
        System.out.println("\nNúmero de teléfono formateado: " + formattedPhoneNumber);
    } 
    

    Ten en cuenta que este código verifica errores en la entrada del número de teléfono, formatea el número de teléfono según lo deseado y muestra el número formateado en la consola. Puedes modificarlo según sea necesario para tu proyecto.

Comments are closed.