2012-12-18 5 views
1

4 개의 문자열 s1, s2, s3, s4가 있습니다. 그리고 난과 비교하려면 "예", "아니오"와 "모두" 그것은 모든 문자열이 "예"는 하나 개의 결과를 제공해야 할 동일한 경우 (s1.equals("yes"));Java에서 두 개 이상의 문자열을 비교하는 방법은 무엇입니까?

  1. 처럼되고있다.
  2. 모든 문자열이 "아니오"인 경우 하나의 결과를 제공해야합니다.
  3. 2 개의 문자열이 "예"이고 다른 2 개의 문자열이 "아니요"인 경우 하나의 결과를 제공해야합니다.
  4. 3 개의 문자열이 "예"이고 1 개의 문자열이 "아니오"인 경우 하나의 결과를 제공해야합니다.
  5. 있는 3 따가워은 "아니오"1 개 문자열이 "예"는 하나 개의 결과를 제공하는 동일합니다 ..

어떻게 비교를 할 수 동일한 경우는?

+0

"예"또는 "아니오"입니까? – Bohemian

+1

나는 '예'또는 '아니오'와 일치하는 문자열의 수를 저장 한 다음 그 수를 기반으로 결과를 결정하는 것이 좋습니다. – Perception

답변

0

이 논리를 사용해 볼 수 있습니다.

if(s1.equals("yes") && s2.equals("yes") && s3.equals("yes") && s4.equals("yes")) 
    result1; 
else if (s1.equals("no") && s2.equals("no") && s3.equals("no") && s4.equals("no")) 
    result2; 
else if ((s1.equals("yes") || s2.equals("yes")) && (s3.equals("no") || s4.equals("no"))) 
    result3; 
else if((s1.equals("yes") || s2.equals("yes") || s3.equals("yes")) && s4.equals("no")) 
    result4; 
else if((s1.equals("no") || s2.equals("no") || s3.equals("no")) && s4.equals("yes")) 
    result5; 
+0

모든 순열 값을 다룰 수 없기 때문에이 방법이 작동하지 않습니다. '예/아니오/아니요/아니요 '-'* 3 개의 스팅이 '아니요'와 같고 1 개의 문자열이 '예'인 경우 실패합니다 ' –

+0

무엇을 의미합니까? 나는 OP가 그의 Q에서 언급 한 순열을 다루었 다. 어떻게 그것 모두를 다 커버하지 않습니까? –

+0

'yes/no/no/no'는'no/no/no/yes'와 동일하지 않습니다 (조합 수는 "사소한 조건부"를 산출하지 않습니다). –

7

나는 목록에있는 문자열을 저장하는 것이며, yesno의 주파수를 찾기 위해 Collections 유틸리티를 사용 :이 사람은 당신이하고자하는 것을 않습니다. 그런 다음 yesno의 번호로 조건을 적용 : -. 물론

List<String> list = new ArrayList<String>() {{ 
    add("yes"); add("yes"); add("no"); add("no"); 
}}; 

int yes = Collections.frequency(list, "yes"); 
int no = Collections.frequency(list, "no"); 


if (yes == 4 || yes == 0) { // all "yes" or all "no" 
    System.out.println("Operation 1"); 

} else if (yes == 2) { // 2 "yes" and 2 "no" 
    System.out.println("Operation 2"); 

} else { // (1 "yes", 3 "no") or (1 "no", 3 "yes") 
    System.out.println("Operation 3"); 
} 

, 나는 당신의 문자열 만 "yes" 또는 "no"이 될 수 있다고 가정합니다.

+0

노출 빈도 +1() – sgowd

+0

감사합니다. 하나 이상의 문자열이 "둘 다"있습니다. – DroidLearner

+0

@ Learner678. 이제는 "예", "아니오"그리고 "둘 다"라는 뜻입니까? –

0

그들 중 하나입니다 가정 "예"또는 "아니오", 이것을 사용 :

int yesCount = (s1+s2+s3+s4).replace("no", "").length()/3; 

는 다음 중 하나가 될 수 아마도 switch(yesCount)

0
String[] str={s1,s2,s3,s4}; 
int yesCount=0, noCount=0; 
for(int i=0;i<str.length();i++){ 
if("yes".equals(str[i])) 
yescount++; 
else if("no".equals(str[i])) 
noCount++; 
} 
String check=""+yesCount+noCount; 
switch(check){ 
case "40": 
//do whatever 
break; 
case "30": 
//do whatever 
break; 
case "20": 
//do whatever 
break; 
case "10": 
//do whatever 
break; 
case "31": 
//do whatever 
break; 
case "21": 
//do whatever 
break; 
case "11": 
//do whatever 
break; 
case "22": 
//do whatever 
break; 
case "12": 
//do whatever 
break; 
case "13": 
//do whatever 
break; 
case "04": 
//do whatever 
break; 
case "00": 
//do whatever 
break; 
} 
0

가정 문자열 값으로,이 당신의 논리를 기반으로 예 또는 아니오

int result = 0; 
    if("yes".equalsIgnoreCase(s0)) result++; 
    if("yes".equalsIgnoreCase(s1)) result++; 
    if("yes".equalsIgnoreCase(s2)) result++; 
    if("yes".equalsIgnoreCase(s3)) result++; 
    switch(result){ 
     case 0: 
      System.out.println("all strings are NO"); 
      break; 
     case 1: 
      System.out.println("3 strings are NO, 1 string is YES"); 
      break; 
     case 2: 
      System.out.println("2 strings are NO, 2 strings are YES"); 
      break; 
     case 3: 
      System.out.println("1 string is NO, 3 strings are YES"); 
      break; 
     case 4: 
      System.out.println("all strings are YES"); 
      break; 
    } 
관련 문제