2013-01-23 83 views
1

我正在做一些使用Java的任務,這是我應該做的。 給定一個整數X,您應該讀取X行,每行包含一個字符串和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; 
    } 
} 

有沒有更簡單的方法,像沒有使用數組?

+2

你可以使用開關,但我會寫最簡單和最清晰的給你。你可以評論爲什麼只打印x + y,爲什麼默認運算符是乘法運算。 –

+1

請注意,在字符串上使用開關僅在'SE 7' – Maroun

+0

如何存儲數據? 是否可以在不使用數組的情況下存儲數據? 我正在考慮將數據存儲到一個整數中,但該整數值將在循環中被覆蓋。 =/ –

回答

1

不要認爲你的情況下數據結構比數組簡單。如果要將結果與操作/行號一起存儲;會建議你使用HashMap。 但是,地圖絕對不比數組簡單。

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得到每一行的結果。

但是,如果您還想存儲您執行的操作;那麼會建議使用這樣的multimap

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)解析爲int,並將其存儲爲String。