2012-04-01 20 views
8

Fondamentalmente, quello che sto cercando di fare, è ottenere l'ID oggetto e impostare un prezzo da un ini, in pratica come: itemid: prezzo ma, non posso semplicemente fare item.getId(). toString(). Sto cercando di ottenere l'articolo Cosa posso fare per renderlo una stringa?Impossibile richiamare toString() sul 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); 
    } 
} 

Questo è il mio codice, (naturalmente non ho l'errore a item.getId(). ToString()), Che cosa posso fare per convertire in una stringa?

+3

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

+0

Spiacente, questa non è una risposta completa (perché non ho il privilegio sufficiente per commentare) ma hai scritto il metodo toString() per l'ID nella classe Item? o usa semplicemente Integer.toString (item.getId() se l'ID è un tipo primitivo .. –

risposta

45

tipi primitivi non hanno metodi, in quanto non sono oggetti in Java. Si consiglia di utilizzare la classe di corrispondenza:

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

Grazie per averlo spiegato. –

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

Ah sì, perché non ci penso prima di tutto! Grazie! –

+0

@QuantumMechanic: mi hai battuto –

-1

tipi primitivi (int, double, byte, ecc ..) non può avere metodi. Così utilizzare questo:

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

Un altro modo semplice per dire basta "" + myInt, assumendo myInt viene assegnato.

in modo da provare:

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

Naturalmente, si consiglia di avvolgere la riga in un try/catch nel caso in cui ci sono errori di parsing o Split [1] è nullo, indice di fuori campo, ecc

In alternativa, il metodo Integer.valueOf(str) restituirà un oggetto intero (in contrapposizione a una primitiva) che consentirà di chiamare direttamente la funzione .toString().

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

Mi piace particolarmente .valueOf() perché memorizza nella cache molti oggetti Integer.

Problemi correlati