无法对基元类型int调用toString()



基本上,我要做的是获取项目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()处有错误),我该怎么做才能将其转换为字符串?

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

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

基元类型(int、double、byte等)不能有方法。所以使用这个:

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

更好:

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

另一种简单的方法是只说"" + myInt,假设myInt被赋值。

所以试试:

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

当然,如果出现解析错误或split[1]为空、索引超出范围等情况,您可能需要将该行封装在try/catch中。

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

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

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

最新更新