2013-04-06 4 views
0

Я пытался использовать этот код, и я так потерялся!Сравнение двух строк с булевым?

Упражнение:

Завершить метод, который принимает две строки и один логическое значение в качестве входных данных. Если логическое значение истинно, этот метод сравнивает первые две строки, игнорируя случайные ситуации (в верхнем и нижнем регистре). Две строки считаются одинаково игнорирующими, если они имеют одинаковую длину, а соответствующие символы в двух строках равны игнорированию случая.

Если логическое значение ложно, этот метод должен сравнивать две строки и возвращать значение true, если первая строка содержит одну и ту же последовательность символов, что и вторая строка, в противном случае значение false.

Примечание: compareTwoStrings("HELLO", "", false) должен возвращать значение false.

А вот моя попытка:

public boolean compareTwoStrings (String a, String b, boolean isIgnoreCase) 
{ 
    if (a.equalsIgnoreCase(b)) { 
     return (isIgnoreCase==true); 
    } 
    else if (a.equals(b)) { 
     return (isIgnoreCase==false); 
    } 
} 

Он даже не компилируется, но даже если это так, я уверен, что это не будет работать.

+0

вы должны проверять логическое и первое, и затем возвращая результат соответствующего метода, вы получили его в обратном направлении. Кроме того, булевы проверяются таким образом, если (myBoolean) что-то делает, а еще что-то еще –

ответ

5

Вы делаете это назад. Субъект говорит: если логическое значение истинно, тогда сделайте это, иначе, затем сделайте это. Поэтому вы должны запрограммировать его таким же образом:

if (isIgnoreCase) { 
    return ... 
} 
else { 
    return ... 
} 

Остальное остается в виде упражнения. Вы должны быть в состоянии разобраться в себе.

+0

Это сработало! ура :) – Kimmm

2

Я думаю, что запрашиваемое решение является следующий метод:

public boolean compareTwoStrings(String a, String b, boolean isIgnoreCase) 
{ 
    if (isIgnoreCase) 
    { 
     return a.equalsIgnoreCase(b); 
    } 

    return a.equals(b); 
} 

Ваш метод дас не компилируется, поскольку компилятор Java предполагает, что унтер некоторые обстоятельства, как если условия для false расценивается. Из-за этого компилятор не может гарантировать, что по крайней мере один оператор return достигнут.

0

Я думаю, что это то, что вы ищете.

public static void myMethod(String str, String str2, boolean bool) { 

    if (bool) { 
     str = str.toLowerCase(); 
     str2 = str2.toLowerCase(); 
     if (str.equals(str2)) 
      System.out.println("strings equal"); 
    } 
    else { 
     System.out.println("false condition"); 
    } 
} 
0

Это может быть решение вашей проблемы:

public boolean compareTwoStrings (String a, String b, boolean isIgnoreCase){ 
    if (isIgnoreCase) 
    return (a.toLowerCase()).equals(b.toLowerCase());   
    else 
    return a.equals(b);  
} 
Смежные вопросы