Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Olllolll
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229
1

Работа с while и boolean

04.06.2013, 22:46. Просмотров 1582. Ответов 7
Метки нет (Все метки)

Java
1
2
3
4
boolean ruben = false;
while (!ruben){
String str = reading.readLine();
ruben = str.equals("high");
-Оператор boolean, до того времени как его инициализируют, хранит всегда false;
-while цикл в качестве условия по умолчанию имеет true;


ruben у нас хранит = ложь,
!ruben - это на сколько я знаю, означает - НЕрубен, то есть не ложь, то есть - ПРАВДА?? или как????

если мы введем то что от нас требует программа, то при сравнение ruben = str.equals("high") - в рубен попадает ПРАВДА?
Но у меня цикл завершается!!

Как так?
По логике програМма работает так же?
пока у нас !ruben (то есть ПРАВДА) просить ввести что то, если это "что то" равно high
передать результат сравнения в рубен - ПРАВДА, если не равно high - ЛОЖЬ.

то почему происходит завершение цикла?
у нас же сказано :
while (!ruben) - выполнять цикл до тех пор пока ПРАВДА.??????????


Прошу прощения за кучу текста, хотел максимально розжевать что именно мне не понятно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 22:46
Ответы с готовыми решениями:

В чем разница между boolean и Boolean
В чем разница между boolean и Boolean

Boolean
package tajriba; import java.util.*; public class tajriba1{ public...

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

Ошибка boolean
Я пишу: boolean mousedown; Выделяет красным цветом и при компиляции выдает...

Boolean cannot be dereferenced
public void clearField (Object invokeSource, Map<String, String> params,...

7
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
04.06.2013, 22:52 2
оператор ! меняет значение на противоположное
0
Care
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
04.06.2013, 23:29 3
пока ruben не true выполняем цикл (тоесть пока ruben false)
0
Olllolll
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229
04.06.2013, 23:54  [ТС] 4
Цитата Сообщение от Care Посмотреть сообщение
пока ruben не true выполняем цикл (тоесть пока ruben false)
РУБЕН обявлен у меня как фолс, но оператор "!" - то есть оператор НЕ - меняет значение фолс, которое изначально присущее логическому оператору boolean, на тру, в контексте переменной рубен, посредству "!ruben".
я так это понимаю, если не правильно, то исправьте.

но вопрос не в этом, вопрос в том, что по условию цикл будет выполняться до тех пор, пока рубен = тру, но при сравнение переменной, которая хранит введенное слово, и уже заданного строкового литерала типа стринг - high, если введенное слово == high, то результатом будет ТРУ, ПРАВДА! - результат заноситься в переменную рубен.

а цикл то выполняется до тех пор пока рубен = ПРАВДА!? ТО КАК ТАК?? по условию програма должно вроде как работать, а у меня прекращает выполнение цикла!!

ОБЯСНИТЕ ГДЕ Я ОШИБАЮСЬ РАДИ БОГА.
0
Bourbon
1 / 1 / 0
Регистрация: 15.02.2013
Сообщений: 7
05.06.2013, 03:44 5
Цитата Сообщение от Olllolll Посмотреть сообщение
РУБЕН обявлен у меня как фолс, но оператор "!" - то есть оператор НЕ - меняет значение фолс, которое изначально присущее логическому оператору boolean, на тру, в контексте переменной рубен, посредству "!ruben".
я так это понимаю, если не правильно, то исправьте.

но вопрос не в этом, вопрос в том, что по условию цикл будет выполняться до тех пор, пока рубен = тру, но при сравнение переменной, которая хранит введенное слово, и уже заданного строкового литерала типа стринг - high, если введенное слово == high, то результатом будет ТРУ, ПРАВДА! - результат заноситься в переменную рубен.

а цикл то выполняется до тех пор пока рубен = ПРАВДА!? ТО КАК ТАК?? по условию програма должно вроде как работать, а у меня прекращает выполнение цикла!!

ОБЯСНИТЕ ГДЕ Я ОШИБАЮСЬ РАДИ БОГА.
Ошибаетесь вы здесь - "что по условию цикл будет выполняться до тех пор, пока рубен = тру". Выполняется цикл только при ruben = false.

У нас (!ruben), поэтому значение ruben меняется на обратное т.е. при ruben = false, !ruben = true. И поэтому, что бы цикл продолжал выполняться, ruben должен быть равен false. Когда вы вводите слово, происходит ruben = true, а значит !ruben = false, т.к. мы берём обратное значение и цикл останавливается.
1
Care
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
05.06.2013, 10:23 6
Скорей всего проще будет понять так : Оператор ! в условие меняет конченое значение для прохождения цикла ,тоесть в условие точней перед условие оператор ! меняет условие при котором будет прохдить цикл;

Например while(ruben){ } будет выпоняться если рубен true , но когда мы подставляем знак ! мы как бы говорим:
"Повторяй цикл пока рубен не ТРУ или пока все условие НЕ ТРУ! " тоесть в условие оператор ! не меняет значение переменной ,а переворачивает все условие при котором должен проходить цикл ;

И вобще легче будет если будешь читать так

while(!ruben) {} = "Выполнять цикл Если рубен не ТРУ" или если тяжело понять для начала можно так :
while(ruben != true) {}

Добавлено через 1 час 30 минут
Точней оператор ! меняет значение всего условия ,а не оператора ! А while(ruben){} где (ruben) являеться уже условием (если рубен true то выполняем) и ! меняет значение и у нас получает true ВСЕГО УСЛОВИЯ!!! в условии оператор ! не меняет значение самой переменной ,а меняет значение УСЛОВИЯ !!!

Затем мы кладете значение true в переменную ruben = str.equals("high");
затем цикл сморит на условие (ruben) где условие равно = true,затем (Последним ) выполняеться оператор ! и условие которые было true становить False , (!ruben) = Все условие ровно FALSE ,при это значение переменной не меняеться !


Вывод: Оператор ! Меняет Значение УСЛОВИЯ ,а не самой переменной

тоесть даже если:

ruben = !ruben; //Это условие

то мы ввидем что сначало условие равно true,но затем оператор ! меняет значение условия
и в ruben Присваиваеться значение УСЛОВИЯ , а не переменной !

Добавлено через 7 минут
точней не условия ,а вырожения))
0
Olllolll
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229
05.06.2013, 13:16  [ТС] 7
Спасибо Bourbon и Care, очень помогли

Care, тебе почему то не хочет ставить +1, нет опции
0
Care
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
05.06.2013, 15:25 8
Цитата Сообщение от Olllolll Посмотреть сообщение
Спасибо Bourbon и Care, очень помогли

Care, тебе почему то не хочет ставить +1, нет опции
Незачто ) Сам не давно начал изучать Java и рад помочь таким же как я)
А насчет опции+1 я не знаю почему... Мб из-за того что я вчера зарегался только)
0
05.06.2013, 15:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2013, 15:25

Boolean Java
Добрый день! Скажите, как пользоваться переменной boolean. Не могу написать...

Тип boolean
Объясните пожалуйста, будет ли это работать boolean b = x>=10 && x<100; ? Если...

Как инвертировать value to boolean
Читаем in Oracle А как это сделать? Так не получается. int x = 1;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru