[ Foro de Java ]

add(Integer)

15-Jan-2023 13:44
Invitado (Mika)
3 Respuestas

Tengo el siguiente código y me pone el siguiente error: The method add(Integer) in the type ArrayList<Integer> is not applicable for the arguments (String)

¿Alguien puede explicarme porque?


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Act2 {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
ArrayList<Integer> clase = new ArrayList<Integer>();
//String valor = sc.nextLine();

System.out.println("Introduce los nombres: ");
String valor = ""; // char valor[10] = "";

while(true) {
valor = sc.nextLine(); // scanf("%s", &valor);
if("fin".equalsIgnoreCase(valor)){
break;
}
clase.add(valor);
}

System.out.println(clase);

Collections.sort(clase);

for(int i=0; i<clase.size();i++)
System.out.print(clase.get(i) + "");

}
}


 


18-Jan-2023 11:39
Nacho Cabanes (+84)

El mensaje es claro: es una lista de enteros, no puedes añadirle cadenas de texto. Deberás convertir antes de texto a número.


24-Feb-2023 20:50
Franco Garcia

Estas tratando de agregar un tipo de dato String(cadena de texto) a una lista de valores numericos enteros (List<Integer>).
Java es un lenguaje fuertemente tipeado. Si declaraste un tipo de dato no podes meterle otro.

Tenes  2 opciones:
1- usas el metodo nextInt (creo que se llamaba asi) de la clase scanner (sc.nextInt()) y lo almacenas en una variable de tipo int o Integer.
2- haces un cast del valor de la cadena al tipo numerico. Si ingresas un valor que no sea numero, te va a largar una excepcion cuando queiras hacer el casting.


14-Mar-2023 22:42
Invitado (Alejandro Andrade)

El error se produce porque estás intentando agregar una cadena de caracteres (String) a una lista que espera elementos de tipo Integer. En el código que has proporcionado, la variable "valor" es de tipo String y se está agregando a la lista "clase", que se ha declarado como una lista de enteros.

Para solucionarlo, deberías cambiar el tipo de datos de la lista a ArrayList<String>, de la siguiente manera:

Scanner sc = new Scanner(System.in);
ArrayList<String> clase = new ArrayList<String>();

System.out.println("Introduce los nombres: ");
String valor = "";

while(true) {
   valor = sc.nextLine();
   if("fin".equalsIgnoreCase(valor)){
       break;
   }
   clase.add(valor);
}

System.out.println(clase);

Collections.sort(clase);

for(int i=0; i<clase.size();i++) {
   System.out.print(clase.get(i) + "");
}

Con estos cambios, podrás agregar cadenas de caracteres a la lista sin problemas.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)