2012-04-01 43 views
8

Básicamente, lo que intento hacer es obtener el ID del artículo y establecer un precio desde un ini, básicamente como: itemid: precio pero no puedo simplemente hacer item.getId(). toString(). Estoy tratando de obtener el artículo ¿Qué puedo hacer para que sea una cadena?No se puede invocar toString() en el tipo primitivo int

public static void getBuyPrice(Item item) { 
    try { 
     String itemId = item.getId().toString(); 
     BufferedReader br = new BufferedReader(new FileReader(new File(
       "./data/prices.ini"))); 
     String line; 
     while ((line = br.readLine()) != null) { 
      if (line.equals(itemId)) { 
       String[] split = line.split(":"); 
       item.getDefinitions().setValue(Integer.parseInt(split[1])); 
      } 
     } 
     br.close(); 
    } catch (Throwable e) { 
     System.err.println(e); 
    } 
} 

Esa es mi código, (por supuesto que tengo el error en item.getId(). ToString()), ¿Qué puedo hacer yo para convertir que a una cadena?

+3

Cadena itemID = "" + item.getId(); –

+0

Disculpa, esta no es una respuesta completa (porque no tengo suficiente privilegio para comentar) pero ¿escribiste el método toString() para el ID en la clase Item? o simplemente use Integer.toString (item.getId() si el ID es un tipo primitivo. –

Respuesta

45

Los tipos primitivos no tienen métodos, ya que no son objetos de Java. Se debe utilizar la clase de juego:

Integer.toString(item.getId()); 
+0

Gracias por explicárselo. –

6
String itemId = Integer.toString(item.getId()); 
+0

Ah sí, ¿por qué no pensé en esto antes que nada! Gracias! –

+0

@QuantumMechanic: me ganaste. –

-1

Los tipos primitivos (int, double, etc .. bytes) no puede tener métodos. fin de utilizar esta:

String itemId = String.valueOf(item.getId()); 
0

Otra forma sencilla es simplemente decir "" + myInt, asumiendo myInt se le asigna.

Así que trate:

item.getDefinitions().setValue("" + Integer.parseInt(split[1])); 

Por supuesto, es posible que desee para envolver la línea en un try/catch en caso de que haya errores o división de análisis sintáctico [1] es nulo, el índice fuera de rango, etc.

Alternativamente, el método Integer.valueOf(str) devolverá un objeto entero (a diferencia de una primitiva) que le permitirá llamar directamente a la función .toString().

item.getDefinitions().setValue(Integer.valueOf(split[1]).toString()); 

Me gusta especialmente .valueOf() porque almacena en caché muchos objetos Integer.

Cuestiones relacionadas