0

私は Java を初めて使用します。Java を使用して、レゴ NXT ロボットに迷路から抜け出す方法を教えています。アルゴリズムのパラメーターは外注してコードにロードする必要があるため、JSON を使用します。MY JSON ファイルは非常に単純です (左側のアルゴリズム):

{"algorithm": 
    {
      "onGapLeft": "moveLeft",
      "onGapFront": "moveForward",
      "onGapRight": "moveRight",
      "default": "moveBackward"
    }
}

このファイルを順番に読むことが非常に重要です。つまり、Left と Right を変更すると、アルゴリズムは Right Hand Algorithm になります。これはこれまでのJavaコードです。私がやろうとしていることを理解していただければ幸いです。ところで:私はJSON.simpleを使用しています!

private static void loadAlgorithm() throws InterruptedException {

        JSONParser parser = new JSONParser();


            Object obj = parser.parse(new FileReader("lefthand.json"));             
            JSONObject jsonObject = (JSONObject) obj;
            JSONArray algorithm = (JSONArray) jsonObject.get("algorithm");
            int length = algorithm.size();

        for(int i = 0; i < length; i++)
        {
            switch (algorithm[i].key)
            {
                 case "onGapLeft" :  leftPos = i; break;
                 case "onGapFront": frontPos = i; break;
                 case "onGapRight": rightPos = i; break;
                 default: break;
            }

            switch (algorithm[i].value)
            {
                 case "moveLeft"    : directionAlgorithm[i] = direction.Left;     break;
                 case "moveFront"   : directionAlgorithm[i] = direction.Forward;  break;
                 case "moveRight"   : directionAlgorithm[i] = direction.Right;    break;
                 case "moveBackward": directionAlgorithm[3] = direction.Backward; break;
                 default: break;
            }
        }           
    }

キー文字列 (algorithm[i].key を実際に使用した場所) と値文字列 (algorithm[i].value) を取得できるかどうかを知る必要があります。

ご助力ありがとうございます!

4

2 に答える 2

0

私は JSON に詳しくありませんが、 JSONObject は HashMap でサポートされているため、以下のようにキーと値を同じ順序で配列に取得できる場合があります。

Map<K, V> map = new HashMap<K, V>();
K[] keys = new K[map.size()];
V[] values = new V[map.size()];
int index = 0;
for (Map.Entry<K, V> mapEntry : map.entrySet()) {
    keys[index] = mapEntry.getKey();
    values[index] = mapEntry.getValue();
    index++;
}
于 2013-09-05T20:46:51.077 に答える