无法在基本类型int上调用toString()

时间:2012-04-01 04:21:40

标签: java string integer

基本上,我正在尝试做的是获取商品ID,并从ini设置价格,基本上就像:itemid:price 但是,我不能简单地做item.getId()。toString()。 我想要拿到物品 我该怎么做才能成为一个字符串?

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()中有错误,我该怎么做才能将它转换为字符串?

6 个答案:

答案 0 :(得分:49)

原始类型没有方法,因为它们不是Java中的对象。您应该使用匹配的类:

Integer.toString(item.getId());

答案 1 :(得分:6)

String itemId = Integer.toString(item.getId());

答案 2 :(得分:3)

String itemId = Integer.toString(item.getId());

答案 3 :(得分:0)

原始类型(int,double,byte等..)不能有方法。 所以使用这个:

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

答案 4 :(得分:0)

另一个简单的方法就是说"" + myInt,假设分配了myInt。

所以试试:

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

当然,如果存在解析错误或者split [1]为null,索引超出范围等,您可能希望将该行包装在try / catch中。

或者,方法Integer.valueOf(str)将返回一个Integer对象(而不是原语),它允许您直接调用.toString()函数。

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

我特别喜欢.valueOf(),因为它会缓存许多Integer对象。

答案 5 :(得分:0)

更好:

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