¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo resolver la excepción de Java al convertir una cadena en un entero

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 13 Vistas
0
Cargando...

Hola Expertos -

Estoy intentando incrementar el valor de una variable local en 1, pero al leer el valor del encabezado, se asigna a una cadena "valor", luego intento convertirlo a un entero con la declaración:

counter_var = Integer.parseInt(valor)

pero recibo una excepción de Java:

java.lang.Exception: java.lang.NumberFormatException: Para la cadena de entrada

Por favor, ayúdenme a resolver este problema.

Gracias,

Anirban

import com.sap.gateway.ip.core.customdev.util.Message
import java.util.HashMap
def Message processData(Message message) {
       //Encabezados 
       def map = message.getHeaders()
       def valor = map.get("INCREMENT")
       if(valor == null)
       { 
           def counter_var = 0       
       }
       else 
       {
           counter_var = Integer.parseInt(valor)
       }
       
       message.setHeader("INCREMENT", counter_var + 1)
       return message;
}
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

3 Respuestas

0
Cargando...

Hola amallick ,

  1. Como sunny.kapoor2 mencionó, la declaración de counter_var debería estar fuera. Y
  2. La condición 'if' también debería verificar la condición de cadena vacía. - if(value == null || value == "")
  3. También es mejor usar una condición adicional value.isNumber() == true y manejar el caso antes de convertir la cadena a entero. La condición anidada a continuación es solo un ejemplo. Puedes hacer cambios y optimizar el código según sea necesario.
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;

def Message processData(Message message) {
       def map = message.getHeaders()
       def value = map.get("INCREMENT");
       def counter_var;
       if(value == null || value == "")
       { 
         counter_var = 0       
       }
       else 
       {
          if(value.isNumber() == false)
		{
		  //hacer que el contador sea cero / generar una excepción personalizada / tomar cualquier otra acción
		}
	    else
		counter_var = Integer.parseInt(value)
       }
       
       message.setHeader("INCREMENT", counter_var + 1)
       return message;
}

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Gracias, sunny.kapoor2 y @ganesh m por sus amables respuestas.

Este es el script que finalmente funcionó para mí:

import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;

def Message processData(Message message) {
       def map = message.getHeaders()
       String value = map.get("INCREMENT");
       def counter_var;
       if(value == null || value == "")
       { 
         counter_var = 0       
       }
       else 
       {
		  counter_var = Integer.parseInt(value)
       }
       
       message.setHeader("INCREMENT", counter_var + 1)
       return message;
}
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola amallick ,

El script parece estar bien, solo mueve la declaración de la variable counter_var fuera.

Si todavía ves el error, verifica el valor del encabezado INCREMENT en el modo de traza, tal vez no tenga el número adecuado en formato de cadena.

import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;

def Message processData(Message message) {
       def map = message.getHeaders()
       def value = map.get("INCREMENT");
       def counter_var;
       if(value == null)
       { 
         counter_var = 0       
       }
       else 
       {
           counter_var = Integer.parseInt(value)
       }
       
       message.setHeader("INCREMENT", counter_var + 1)
       return message;
}

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?