2013-01-23 2 views
1

자바를 사용하여 일부 과제를 수행하고 있으며 이것이 내가해야 할 일입니다. 정수 X이 주어지면 X 행을 읽고 각 행에는 문자열과 두 개의 정수 값 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<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으로 저장되도록하십시오.