2015-10-11 4 views
-2

Насколько я знаю, логика в условных и циклических операциях одинакова, будь то C# или Java.Пока цикл while/do-while не заканчивается

class WhileLoops { 

public static void main(String args[]){ 


Scanner input = new Scanner(System.in); 
String answer = ""; 
/*do{ 

    System.out.println("Will you be my girlfriend?(Yes/No)"); 
    answer = input.nextLine(); 
    }while(answer != "Yes" && answer != "Yes");*/ 

while(answer != "Yes" && answer != "yes") { 

    System.out.println("Will you be my girlfriend?(Yes/No)"); 
    answer = input.nextLine(); 
    } 

System.out.println("I promise to make you feel special."); 

    } 
} 

как вы можете видеть в коде выше я использовал делать-то время, и в то время как только установив либо один в качестве комментария, когда я скомпилировать и запустить.

Это то, что происходит, когда я запускаю программу: 1

+1

Ваш код выписывает изображения? Скопируйте свой образец ввода и вывода в свой вопрос! Здесь нет необходимости в изображении. – usr2564301

+0

Трудно загрузить? Хорошо в следующий раз спасибо вам :) – Andre

ответ

2

Используйте метод .equals(). Так,

while(answer.equalsIgnoreCase("yes")) {... } 

Причина этого заключается в том, что Java сравнивает ссылки при использовании оператора ==. Когда вы сравниваете две строки, они указывают на разные места в памяти, и поэтому сравнение не выполняется.

Методы equals()equalsIgnoreCase()) сравнивают фактическое содержимое блока памяти.

Примечание: Это относится только к ссылочным типам (например, к строкам и другим классам). Типы значений (например, int и float и т. Д.) Можно сравнить с обычными операторами равенства.

+0

Спасибо за ваш конкретный и информативный ответ! Очень благодарен :) – Andre

0

Используйте это:

while(!answer.toLowerCase().equals("yes")) 
+0

Спасибо за ваш ответ :) – Andre

Смежные вопросы