2014-12-04 3 views
-3

문자열의 ArrayList를 트래버스하고 각 연산자가 연산자 (+, -, /, *, %)인지 확인하려고합니다. 구분 기호를 사용합니까? 그렇다면이 경우 어떻게 사용 하시겠습니까?구분 기호 (Java)를 사용 하시겠습니까?

+1

* * 귀하의 질문이 명확하지 않다, 당신이 바꿔한다는 –

+0

내가 ArrayList에 있다고 가정 list = { "12", "510", "+", "2", "*"}. 연산자와 피연산자를 구분하고 싶습니다. – mPlotts

답변

2

매우 간단한 검사 방법은 목록에 알려진 구분 기호를 사용하고 각 항목이 해당 목록에 있는지 확인하는 것입니다. 예를 들면 :

List<String> delimiters = new ArrayList<>(); 
delimiters.add("+"); 
delimiters.add("-"); 
delimiters.add("/"); 
delimiters.add("*"); 
delimiters.add("%"); 

List<String> list = new ArrayList<>(); 

list.add("12"); 
list.add("510"); 
list.add("+"); 
list.add("2"); 
list.add("*"); 

List<String> operators = new ArrayList<>(); 
List<String> operands = new ArrayList<>(); 

for (String s : list) 
{ 
    if (delimiters.contains(s)) 
    { 
     operators.add(s); 
    } 
    else 
    { 
     operands.add(s); 
    } 
} 
System.out.println("Operators: " + operators); 
System.out.println("Operands: " + operands); 

출력 : 코멘트의 예를 들어

List<String> delimiters = new ArrayList<>(); 
delimiters.add("+"); 
delimiters.add("-"); 
delimiters.add("/"); 
delimiters.add("*"); 
delimiters.add("%"); 

List<String> list = new ArrayList<>(); 

list.add("a"); 
list.add("b"); 
list.add("c"); 
list.add("d"); 
list.add("+"); 
list.add("-"); 
list.add("/"); 
list.add("*"); 
list.add("%"); 

for (String s : list) 
{ 
    if (delimiters.contains(s)) 
    { 
     System.out.println("This is a delimiter. " + s); 
    } 
} 

편집이므로

Operators: [+, *] 
Operands: [12, 510, 2] 
+0

존재 여부를 확인하려면 목록 대신 집합 (또는지도)을 사용하십시오. –

+0

@DavidConrad 나는 ArrayList가 성능상 가장 좋지 않다는 것에 동의하지만 작동한다. – starf