Ответ 1
Инструкция if
имеет следующий вид:
if (condition) statement
В настоящее время у вас есть два условия в квадратных скобках... которые также в конечном итоге присваивают значения, которые, вероятно, не то, что вы хотите.
Итак, сначала исправьте его, чтобы его компилировать:
if ((First_Relation = true) & (Second_Relation = true))
Затем измените назначения на проверки равенства, так как иначе он просто присвойт true
обеим переменным, и условие пройдет независимо от их предыдущих значений:
if ((First_Relation == true) & (Second_Relation == true))
Затем удалите сравнения с булевыми константами:
if ((First_Relation) & (Second_Relation))
Затем удалите ненужные скобки:
if (First_Relation & Second_Relation)
Затем сделайте переменные следующими соглашениями об именах Java:
if (firstRelation & secondRelation)
Затем используйте более традиционное &&
вместо &
- &&
короткое замыкание и почти всегда то, что вы хотите:
if (firstRelation && secondRelation)
Теперь у вас есть полуточка непосредственно после вашего условия if
, что делает ее бессмысленной - она всегда будет выполнять оператор System.out.println
, потому что это не часть инструкции if
. Вы могли бы просто удалить полуточку, но я бы добавил фигурные скобки для ясности:
if (firstRelation && secondRelation) {
System.out.println("insert text here");
}
Затем обратите внимание, что вы фактически инициализируете свои переменные, если условие истинно, поэтому вы в настоящее время получаете ошибку времени компиляции для попытки чтения переменных, которые определенно не назначены.
Сначала зафиксируйте определенное задание:
// Names changed to follow conventions
boolean firstRelation = p > q;
boolean secondRelation = r < s;
... и код выше должен быть точным.
Далее, укажите, что вы действительно очень мало зарабатываете на этих дополнительных переменных. Вместо этого выполните следующие условия:
if (p > q && r < s) {
System.out.println("Given the values for p,q,r, and s the expression "
+ "(p > q) && !(r < s) evaluates to ";
}
В этот момент становится совершенно ясно, что есть еще одна ошибка - потому что ваше сообщение говорит о !(r < s)
, но условие - это просто r < s
. Поэтому вам нужно решить, чего вы хотите достичь, и сделать код и сообщение отражать то же самое. Обратите внимание, что сообщение не заканчивается. В самом деле, вы могли бы упростить все это:
System.out.println("Given the values for p,q,r, and s the expression "
+ "(p > q) && !(r < s) evaluates to " + ((p > q) && !(r < s));
... или все, что вы хотите, чтобы выражение действительно было.