【问题标题】:Cannot invoke toString() on the primitive type int无法在原始类型 int 上调用 toString()
【发布时间】:2012-04-15 06:07:37
【问题描述】:

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

【问题讨论】:

  • String itemID = ""+item.getId();
  • 对不起,这不是一个完整的答案(因为我没有足够的权限发表评论)但是您是否为 Item 类中的 ID 编写了 toString() 方法?或者如果 ID 是原始类型,则仅使用 Integer.toString(item.getId()。

标签: java string integer


【解决方案1】:

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

Integer.toString(item.getId());

【讨论】:

    【解决方案2】:
    String itemId = Integer.toString(item.getId());
    

    【讨论】:

    • 啊,是的,我为什么没有首先想到这个!谢谢!
    • @QuantumMechanic:你打败了我。
    【解决方案3】:
    String itemId = Integer.toString(item.getId());
    

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        更好:

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

        【讨论】:

          【解决方案6】:

          另一种简单的方法是直接说 "" + 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 对象。

          【讨论】:

            猜你喜欢
            • 2023-03-17
            • 2013-11-11
            • 2018-11-03
            • 1970-01-01
            • 2014-05-19
            • 2013-07-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多