2012-04-01 24 views
8

基本的に、私がやろうとしているのはアイテムIDを取得し、iniから価格を設定します:itemid:price しかし、 item.getId()。toString()。 アイテムを取得しようとしています 文字列にするにはどうすればよいですか?私のコードを、ある プリミティブ型のint型で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())、私は文字列にそれを変換するために何ができますか?彼らはJavaでオブジェクトではありませんよう

+3

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

+0

残念ですが、これは完全な回答ではありません(コメントする権限がないため)が、ItemクラスのIDに対してtoString()メソッドを記述しましたか? IDがプリミティブ型の場合は、Integer.toString(item.getId()を使用してください) –

答えて

45

プリミティブ型は、メソッドを持っていません。

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を言うことです。

ので、試してみてください。もちろん

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

を、あなたは解析エラーまたは分割があった場合にはのtry/catchで行をラップすることができます[1]など、範囲外のインデックスnullであります

また、メソッドInteger.valueOf(str)は、.toString()関数を直接呼び出すことができるIntegerオブジェクト(プリミティブとは対照的)を返します。

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

特に、.valueOf()は、多くのIntegerオブジェクトをキャッシュするため、好きです。

関連する問題