1

4 つの文字列 s1、s2、s3、s4 があります。「はい」、「いいえ」、「両方」と比較したい(s1.equals("yes"));

  1. すべての文字列が「yes」に等しい場合、結果は 1 つになります。
  2. すべての文字列が「いいえ」に等しい場合、結果は 1 つになります。
  3. 任意の 2 つの文字列が「はい」に等しく、別の 2 つの文字列が「いいえ」に等しい場合、1 つの結果を返す必要があります。
  4. 3 つの文字列が「はい」に等しく、1 つの文字列が「いいえ」に等しい場合、結果は 1 つになります。
  5. 3 つの文字列が「いいえ」に等しく、1 つの文字列が「はい」に等しい場合、1 つの結果を返す必要があります。

この比較を行う方法は?

4

5 に答える 5

7

これらの文字列をリストに保存し、Collectionsユーティリティを使用して と の頻度を見つけyesますno。次に、条件を number ofyesおよびno.: -に適用します。

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"

于 2012-12-18T06:04:20.463 に答える
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;
于 2012-12-18T05:56:49.867 に答える
0

それらが「はい」または「いいえ」のいずれかであると仮定して、これを使用します。

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

次に、おそらくそれを使用して、それに基づいてロジックを作成しますswitch(yesCount)

于 2012-12-18T06:11:32.973 に答える
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;
}
于 2012-12-18T06:33:18.767 に答える
0

文字列値が yes または no のいずれかであると仮定

    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;
    }
于 2012-12-18T06:35:14.293 に答える