1

私はJavaを使用していくつかの割り当てを行っていますが、これが私がすべきことです。integer が与えられた場合XX各行には文字列と 2 つの整数値xy.

**Input**
2 <-- Read 2 lines
PLUS 10 30 <-- PLUS refers to adding 30 to 10
MINUS -6 20 <-- MINUS refers to minus 20 from -6
**Output**
40 
-26

値 40 と -26 を格納するにはどうすればよいですか? 私は現在配列を使用しています。以下のコード。

for(int i = 0; i < limit; i++)
{
    String limitInput = sc.next();
    x = sc.nextInt();
    y = sc.nextInt();
    if(limitInput.equals("PLUS"))
    {
        System.out.println(x+y);
        limitArray[i] = x + y;
    }
    else if(limitInput.equals("MINUS"))
    {
        limitArray[i] = x - y;
    }
    else
    {
        limitArray[i] = x * y;
    }
}

配列を使用しないような、より単純なアプローチはありますか?

4

1 に答える 1

1

あなたの場合、配列よりも単純なデータ構造があるとは思わないでください。操作/行番号とともに結果を保存する場合。HashMap の使用を提案します。でもね。map は間違いなく array より単純ではありません。

 Map<Integer,Integer> map = new HashMap<Integer,Integer>();
 int line = 1; //read line number
 int result= 40;  //read final result
 map.put(line, result); 

このようにして、マップを反復することで各行の結果を得ることができます。

ただし、実行した操作も保存したい場合。次に、このようにマルチマップを使用することを提案します

 Map<Integer, ArrayList<String>> map = new HashMap<Integer, ArrayList<String>>();
 ArrayList<String> a = new ArrayList<String>(); 
 a.add("PLUS"); //add operation
 a.add(result); //add result

 map.put(line, a);

リストから値を読み取るとき。値(位置1)を解析して、文字列として保存されていることを確認してください。

于 2013-01-23T09:18:01.960 に答える