2012-04-01 18 views
8

Zasadniczo próbuję uzyskać identyfikator przedmiotu i ustawić cenę z ini, w zasadzie jak: itemid: cena , ale nie mogę po prostu zrobić item.getId(). toString(). Próbuję dostać przedmiot Co mogę zrobić, aby stał się ciągiem?Nie można wywołać metody toString() na typie pierwotnym 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); 
    } 
} 

To jest mój kod, (oczywiście mam błąd w item.getId(). ToString()) Co mogę zrobić, aby przekonwertować na ciąg?

+3

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

+0

Niestety nie jest to pełna odpowiedź (ponieważ nie mam wystarczających uprawnień do komentowania), ale czy napisałeś metodę toString() dla identyfikatora w klasie Element? lub po prostu użyj Integer.toString (item.getId(), jeśli ID jest typem pierwotnym –

Odpowiedz

45

typie pierwotnym nie ma metody, ponieważ nie są one obiektów w Javie. Należy użyć klasy Dopasowanie:

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

Dzięki za wyjaśnienie tego. –

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

Ach tak, dlaczego nie pomyślałem o tym po raz pierwszy! Dzięki! –

+0

@QuantumMechanic: pokonałeś mnie –

-1

prymitywnych typów (int, double, byte itd ..) nie może mieć metod. Więc użyj tego:

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

Innym prostym sposobem jest po prostu powiedzieć "" + myInt, zakładając Myint jest przypisany.

Więc spróbuj:

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

Oczywiście, można owinąć linię w try/catch w przypadku istnieją analizowania błędów lub podzielonego [1] jest nieważna, indeks poza zakresem, itd.

Alternatywnie, metoda Integer.valueOf(str) zwróci obiekt Integer (w przeciwieństwie do obiektu pierwotnego), który umożliwi bezpośrednie wywołanie funkcji .toString().

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

Szczególnie podoba mi się .valueOf(), ponieważ buforuje wiele obiektów Integer.

Powiązane problemy