In Java, we can control the "flow" of the program by using conditional statements.
Let's take a look at this simple example.
1. class DrinkingAgeTest creates a class called DrinkingAgeTest.
2. We then create a static integer age (this does not have to be static if it is placed inside the main method).
3. Of course we create a main method, as all Java programs will look for this as a starting point.
4. Now the interesting parts:
If so, it carries out everything inside the braces for that if statement. If not, the statement is completely skipped.
Applying this to the example class, the compiler checks if age, which is 18, is greater than or equal to 21.
It is not, so it skips the line:
Lesson #1-10: Simulating Probability: Relational Operators
In the lesson #1-8, we created a random object called rand and invoked the method "nextInt."
Now let's simulate probability, starting with a simple example.
//Let's simulate a coin toss!
public class Simulation {
public static void main(String[] args){
Random rand = new Random();
int result = rand.nextInt(2);
if (result == 0){
System.out.println("heads");
}
else if(result == 1){
System.out.println("tails");
}
else if(result == 3){
System.out.println("side. fix your random number generator");
}
}
}
We arbitrarily decide that the value of 1 is equal to heads and the value of 0 is equal to tails. Now we test the value of result using else if statements (mutually exclusive events) and display the appropriate string (text).
Since the value of result should never (theoretically) be 3, I created a third statement that is only read if result does somehow become 3 (it should be as common as landing a coin on its side).
In these two lessons, we used two operators: == and >=.
Here are all six relational operators:
In this lesson, we are going to create a simple game. Oh, don't get too excited. By simple, I mean simple.
Before we do that, here's a quick lesson on conditional operators:
When you have a statement like this:
NOTE: When you just write a boolean (variables with value of either true or false, such as conditionOne) without stating: == true or == false, it is assumed that you actually wrote boolean = true.
In other words:
Now back to our game!
Here is how the game works. You roll a 6-sided die. If you land a 1 or 2 you lose. If you get a 3, 4, or 5, you roll again. If you get a 6, you win.
To write good programs, you have to plan beforehand. You should think the following:
1. I need a random number generator.
2. I should test if:
I. a number is less than or equal to 2.
II. if not, I should test whether if that number is between 3 and 5 (inclusive)
III. if not, I should test whether if that number is 6.
3. I should carry out an appropriate response.
Simple. Now let's create this class.
figure 3: BySimpleIMeanSimple class, Complete
import java.util.Random;
//The greatest game ever made follows.
class BySimpleIMeanSimple {
static int dieValue;
public static void main(String[] args) {
rollDie();
} // ends main
static void rollDie() {
Random rand = new Random();
// Assign a random number between 1 and 6 as dieValue
dieValue = rand.nextInt(6) + 1;
System.out.println("You rolled a " + dieValue);
// Why add 1? Think about it.
testDieValue(dieValue);
} // ends rollDie()
static void testDieValue(int dieValue) {
if (dieValue <= 2) {
System.out.println("You Lose.");
} // ends if
else if (dieValue == 3 || dieValue == 4 || dieValue == 5) {
System.out.println();
System.out.println("Rerolling.");
System.out.println();
rollDie();
} // ends else if
else if (dieValue == 6) {
System.out.println("You win! Congratulations!");
} // ends else if
} // ends testDieValue()
} // ends BySimpleIMeanSimple Class
We will discuss this class in detail in tomorrow's lesson!
You might be surprised by what you have already learned!
A tip: if you don't know what the purpose of a certain line of code is, it is a good idea to remove it temporarily (comment it out and run it). You can compare results with and without the statement =)
You can also modify the code and see how it works differently.
If you have any questions:
Comment below!