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.

Calcula la edad del usuario con LocalDateTime

Estoy intentando hacer un programa que solicita al usuario el año de su cumpleaños (como 2001). Luego, se realizan algunas operaciones matemáticas (tiempo actual – el año que el usuario escribió, como (2021 – 2001)). Sin embargo, obtengo este error:

Operador “-” no se puede aplicar a una cadena y un entero.

¿Cómo solucionar este error?

El código:

package com.myApp.User;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;

public class GetUserAge {

    public String localtimeYear;
    public int userBirthdayYear;

    public static void main(String[] args) {

        Scanner scannerObject = new Scanner(System.in);
        GetUserAge getUserAgeObject = new GetUserAge();
        LocalDateTime localDateObject = LocalDateTime.now();
        DateTimeFormatter localDateObjectFormatted = DateTimeFormatter.ofPattern("yyyy");

        getUserAgeObject.localtimeYear = localDateObject.format(localDateObjectFormatted);
        // System.out.println(getUserAgeObject.localtimeYear); => 2021
        getUserAgeObject.userBirthdayYear = scannerObject.nextInt();
        System.out.println(calculaVerdaderoAñoDeNacimiento(getUserAgeObject.userBirthdayYear));
    }

    static int calculaVerdaderoAñoDeNacimiento(int userBirthdayYear) {

        GetUserAge getUserAgeObject = new GetUserAge();

        return (Integer.parseInt(getUserAgeObject.localtimeYear) - userBirthdayYear);
    }

}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “El operador ‘-‘ no se puede aplicar a una cadena y un entero” sugiere que estás intentando realizar una operación matemática entre una cadena y un tipo de dato entero.

    Para solucionar este error, necesitas convertir la cadena que contiene el año actual (localtimeYear) a un tipo de dato entero antes de realizar la operación matemática. Puedes utilizar el método Integer.parseInt() para hacer esto.

    Reemplaza la línea:

    return (getUserAgeObject.localtimeYear - userBirthdayYear);
    

    con:

    return (Integer.parseInt(getUserAgeObject.localtimeYear) - userBirthdayYear);
    

    Esto convertirá la cadena que contiene el año actual a un tipo de dato entero y luego realizará la operación matemática.

Comments are closed.