2015-05-26 4 views
-4

Я пытаюсь обернуть голову вокруг проблемы, с которой я сталкиваюсь с практической проблемой с использованием булевых выражений. Я хочу создать программу, которая говорит, если кто-то должен ездить на велосипеде или нет. У меня есть две переменные и я хочу написать инструкцию AND и инструкцию OR. Моими переменными являются дорожные условия и температура.Boolean Understanding

Редактировать: С помощью полученной информации я немного продвинулся вперед. Я столкнулся с другим вопросом в строке 22 ниже;

// Program to decide if biking or driving to work is best 

import javax.swing.*; 

public class SNHU3_4Paper { 

public static void main(String[] args) { 

    String temperature; 
    String roadCondition; 

    double temp; 
    double weather = 50; 
    double road; 
    boolean roadIsdry = true; 

    temperature = JOptionPane.showInputDialog("Enter temperature outside: "); 
    roadCondition = JOptionPane.showInputDialog("Is the road dry (true or false): "); 

    temp = Double.parseDouble(temperature); 
    road = Double.parseDouble(roadCondition); 

    if (temp >= weather && road == roadIsdry) 
     JOptionPane.showMessageDialog(null, "Bike to work"); 

    else { 
     JOptionPane.showMessageDialog(null, "Drive to work"); 

    } 

} 

} 
+1

Когда вы используете логическое значение, нет 0 или 1. Существует только true или false. – mmking

+1

Было бы полезно, если бы вы разместили свой текущий код и объяснили, что именно вы пытаетесь сделать. –

+2

http://en.wikipedia.org/wiki/Boolean_algebra –

ответ

1

Чтобы ответить на ваш второй вопрос: I have run into another issue in Line 22 from below

Вы сравниваете roadIsdry, что является булевым, до roadCondition, что является строкой, используя ==. Раньше вы использовали roadCondition, чтобы провести ввод пользователя, а затем проанализировать его.

В Java сравнение примитивных типов (int, boolean, double и т. Д.) С объектами с использованием == в значительной степени не работает. Строки - это объекты. roadIsdry == roadCondition буквально спрашивает Java «адрес памяти от roadCondition такой же как boolean значениеroadIsdry?" и всегда будет оценивать ложь, потому что эти две вещи не то же самое, и даже не имеют смысла сравнивать.

То, что вы хотите сделать, это сравнить roadIsdry в булево, либо true или false, или другой переменной, которая является булево. Вы также можете указать только roadIsdry. if (...) рассчитывает иметь логическое значение в качестве его конечного значения, чтобы решить, какая ветвь кода должна следовать, поэтому if (roadIsdry) совершенно справедливо, равно как if (temp >= weather && roadIsdry).

+0

Я знаю. Я просто поймал это и сейчас обновляю свой пост с новым кодом. Извини за это. – Ph1shPhryd

+0

Я прочитал ваши комментарии и посмотрю, что вы говорите. Я исправил проблему. Спасибо за помощь. – Ph1shPhryd

1

Для представления дорожных условий как сухих, так и влажных булево значение будет достаточным. Например, логическая переменная может быть установлена ​​как так

bool road_is_dry = true; 

if(road_is_dry){ 
    print("The road is dry"); 
} else { 
    print("The road is wet"); 
} 

В этом случае, дорога сухая, так что «Дорога сухая» будет напечатано. Если для одной и той же переменной установлено значение false, дорога не будет сухой (она влажная), поэтому «Дорога будет влажной» будет напечатана.

Это пример условного оператора, в котором вы принимаете решение о том, какой блок кода должен быть выполнен. In может быть очень полезно при настройке условного использования имен переменных, которые могут быть объединены, чтобы сделать простые английские предложения. Затем основные предложения могут быть переведены в код и обратно.

Равнина английское предложение «Если дорога сухая, ездить на велосипеде» можно легко перевести в код, если хорошие имена переменных и функций выбраны, например, так

if(road_is_dry){ 
    ride_bike(); 
}