0

これは私の最後の質問の続きです: データをハッシュテーブルに保存する方法-java

これがjsonです:

{"DeviceID":"35181805087546548","TotalCount":"0","Timestamp":"2013-03-05 14:30:15"}

これが私のハッシュテーブルの宣言です:

    private static Hashtable<Integer,String> table = new Hashtable<Integer,String>();
    private static AtomicInteger count = new AtomicInteger() ;

jsonobjectを解析するコードは次のとおりです。

        JSONObject jsonObj;
        try {
            jsonObj = new JSONObject(string);
            int id = jsonObj.optInt("DeviceID", count.addAndGet(1) );
            String name = jsonObj.toString();
            table.put(id, name);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

以下のコードを使用すると、jsonの「DeviceID」が変更された場合でも、IDは常に「2147483647」になります。ヒントはありますか?

どうもありがとう

4

3 に答える 3

4

あなたの値はintには大きすぎます。最大許容値は2,147,483,647です。int32の最大値はいくつですか?を参照してください。。値をlongとして解析する必要があります。

于 2013-03-05T20:42:58.060 に答える
1

Javaの整数の最大値は2,147,483,647であるため、デバイスIDが適合しません。longおそらくそれを(最大値9,223,372,036,854,775,807)として保存する必要があります。

于 2013-03-05T20:43:33.863 に答える
1

取得する数値は符号付き整数の最大値であるか、longを使用する必要があります。そうでない場合、結果はInteger.MAX_VALUEに制限されます。

于 2013-03-05T20:43:57.700 に答える