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 manejo los errores de entrada incorrecta al utilizar el método de subcadena?

Estoy intentando completar un proyecto que toma una fecha en el formato: Mes Día, Año Ejemplo: 1 de diciembre de 1990. Después de tomar esta fecha, estoy intentando mostrarla en el formato Mes/Día/Año. El método que se espera que utilice es substring. Me estoy encontrando con problemas de errores al manejar entradas incorrectas. Por ejemplo, si no hay una coma, ocurre un error y se termina el bucle. Me pregunto si hay alguna manera de verificar cada valor para detectar un error y luego continuar a través del bucle si se encuentra un error. Aquí está mi código hasta ahora:

 public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
                          // Bandera para indicar la siguiente iteración
      String lineString = "";
      String month;
      int year;
      int day;
      char comma;
  lineString = scnr.nextLine();
  while(!lineString.equals(-1)) {

   month = lineString.substring(0, lineString.indexOf(" "));
   day = Integer.parseInt(lineString.substring(lineString.indexOf(" ") + 1, lineString.indexOf(',')));   
   comma = lineString.charAt(lineString.indexOf(','));
   year = Integer.parseInt(lineString.substring(lineString.length()-4));

   System.out.println(month);
   System.out.println(day);
   System.out.println(comma);
   System.out.println(year);

   lineString = scnr.nextLine();
  }

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para manejar errores al analizar la cadena de entrada, puedes usar un bloque try-catch para capturar cualquier excepción que ocurra durante el análisis. Por ejemplo, puedes envolver el análisis de las variables día y año en bloques try-catch separados de esta forma:

    try {
        día = Integer.parseInt(lineString.substring(lineString.indexOf(" ") + 1, lineString.indexOf(',')));
    } catch (NumberFormatException | StringIndexOutOfBoundsException e) {
        System.out.println("Formato de día inválido, omitiendo línea");
        continue;
    }
    
    try {
        año = Integer.parseInt(lineString.substring(lineString.length()-4));
    } catch (NumberFormatException e) {
        System.out.println("Formato de año inválido, omitiendo línea");
        continue;
    }
    

    En el código anterior, si el análisis del día o año falla debido a un formato inválido o un índice fuera de rango, se imprime un mensaje y el bucle continúa con la siguiente línea de entrada.

    En cuanto a verificar cada valor en busca de un error, puedes usar sentencias if para validar cada valor antes del análisis. Por ejemplo, para verificar si la cadena de entrada contiene una coma antes del análisis:

    if (!lineString.contains(",")) {
        System.out.println("Coma faltante, omitiendo línea");
        continue;
    }
    
    mes = lineString.substring(0, lineString.indexOf(" "));
    día = Integer.parseInt(lineString.substring(lineString.indexOf(" ") + 1, lineString.indexOf(',')));
    año = Integer.parseInt(lineString.substring(lineString.length()-4));
    

    En el código anterior, si la cadena de entrada no contiene una coma, se imprime un mensaje y el bucle continúa con la siguiente línea de entrada.

Comments are closed.