This site requires JavaScript, please enable it in your browser!
Greenfoot back
erdelf
erdelf wrote ...

2012/10/16

simple problem with switch-case

erdelf erdelf

2012/10/16

#
following code:
            switch(Greenfoot.getRandomNumber(2))
            {
                case 0: var++;
                case 1: var--;
            }
the variable is only changed when 1 returns;
SPower SPower

2012/10/16

#
You forgot the break statements at the end of each case, which causes the switch to execute both cases when the result is 0.
Duta Duta

2012/10/16

#
You need:
switch()
{
    case 0:
        var++;
        break;
    case 1:
        var--;
}
Otherwise if the case is 0, var gets incremented but without the break statement it flows into the following case, which decrements var, meaning overall it looks like it hasn't changed. On a side note, there are better ways to do this than using a switch, for example:
import java.util.Random;
if(new Random().nextBoolean())
    var++;
else
    var--;
or if you really want to use Greenfoot.getRandomNumber() for some reason...:
if(Greenfoot.getRandomNumber(2) == 0)
    var++;
else
    var--;
erdelf erdelf

2012/10/16

#
thx SPower, I always forget this
SPower SPower

2012/10/16

#
@Duta btw this:
import java.util.Random;  
if(new Random().nextBoolean())  
    var++;  
else  
    var--;
won't work, this:
import java.util.Random;  
if((new Random()).nextBoolean())  
    var++;  
else  
    var--;  
will :)
danpost danpost

2012/10/16

#
Either one of the following would work:
var = var - 1 + 2 * Greenfoot.getRandomNumber(2);
// OR
var = var + 1 - 2 * Greenfoot.getRandomNumber(2);
which are equivalent to
var -= 1 - 2 * Greenfoot.getRandomNumber(2);
// OR
var += 1 - 2 * Greenfoot.getRandomNumber(2);
You need to login to post a reply.