web-dev-qa-db-fra.com

Impossible d'appeler toString () sur le type primitif int

Ce que j'essaie de faire, c'est d'obtenir l'ID de l'article et de définir un prix à partir d'un ini, comme: itemid: price Mais je ne peux pas simplement faire item.getId (). ToString () . J'essaie d'obtenir l'élément Que puis-je faire pour en faire une chaîne?

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);
    }
}

C'est mon code (bien sûr, j'ai l'erreur à item.getId (). ToString ()), que puis-je faire pour convertir cela en chaîne?

8
Alex DaSilva

Les types primitifs n'ont pas de méthodes, car ils ne sont pas des objets en Java. Vous devriez utiliser la classe correspondante:

Integer.toString(item.getId());
48
MByD
String itemId = Integer.toString(item.getId());
6
Skip Head
String itemId = Integer.toString(item.getId());
3
QuantumMechanic

Les types primitifs (int, double, octet, etc.) ne peuvent pas avoir de méthodes. Alors utilisez ceci:

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

Un autre moyen simple consiste simplement à dire "" + myInt, en supposant que myInt soit attribué.

Alors essayez:

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

Bien sûr, vous pouvez vouloir envelopper la ligne dans un try/catch au cas où il y aurait des erreurs d’analyse ou si split [1] est nul, index hors limites, etc.

Sinon, la méthode Integer.valueOf(str) renverra un objet Integer (par opposition à une primitive) qui vous permettra d'appeler directement la fonction .toString ().

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

J'aime particulièrement .valueOf () car il met en cache de nombreux objets Integer. 

0
E.S.

Meilleur:

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