2012-04-01 3 views
8

В принципе, что я пытаюсь сделать, это получить идентификатор элемента и установить цену из ini, в основном как: itemid: price , но я не могу просто сделать item.getId(). ToString(). Я пытаюсь получить элемент Что я могу сделать, чтобы сделать его строкой?Невозможно вызвать toString() для примитивного типа 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); 
    } 
} 

Вот мой код, (я, конечно, есть ошибки в item.getId(). ToString()), Что я могу сделать, чтобы преобразовать его в строку?

+3

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

+0

Извините, что это не полный ответ (потому что у меня нет достаточных привилегий для комментариев), но вы написали метод toString() для идентификатора в классе Item? или просто используйте Integer.toString (item.getId(), если идентификатор является примитивным типом. –

ответ

45

Примитивные типы не имеют методов, так как они не являются объектами в Java. Вы должны использовать соответствующий класс:

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

Спасибо, что объяснили это. –

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

Ах да, почему я не подумал об этом в первую очередь! Спасибо! –

+0

@QuantumMechanic: вы избили меня. –

-1

Примитивные типы (int, double, byte и т. Д.) Не могут иметь методы. Так что используйте это:

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

Другой простой способ это просто сказать "" + myInt, предполагая MyInt назначается.

Так попробуйте:

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

Конечно, вы можете обернуть строку в Try/улова в случае, если есть разборе ошибки или раскол [1] равно нулю, индекс вне диапазона и т.д.

В качестве альтернативы метод Integer.valueOf(str) вернет объект Integer (в отличие от примитива), который позволит вам напрямую вызвать функцию .toString().

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

Мне особенно нравится .valueOf(), потому что он кэширует многие объекты Integer.

Смежные вопросы