java - Random number keeps giving the number 1 -
since added while loop little rock,paper , scissors game keeps giving me number 1.
package steenpapierschaar1; import java.util.scanner; /** * * @author t */ public class steenpapierschaar1 { /** * @param args command line arguments */ public static void main(string[] args) { int rock = 1 ; // waarde van rock int paper = 2; // waarde van paper int scissor = 3;// waarde van scissor int ai = 1 + (int) (math.random() *3);// maakt int ai een random getal nog niet af moet een range in komen scanner keyboard = new scanner (system.in);// naam scanner input boolean playing = true; string answer, answer2 = null; while(playing = true){ system.out.println("choose 1 rock, 2 paper , 3 scissor"); // string met keuze voor user int userchoice = keyboard.nextint();// waarde van userchoice if (ai == 1 && userchoice == 2 || ai == 2 && userchoice == 3 || ai == 3 && userchoice == 1) { // als de speler elke keer 1x hoger heeft wint hij de ronde system.out.println("you win");// outprint met dat je gewonnen hebt en wat de computer doet if (ai == 1) system.out.println("the computer did rock"); if (ai == 2) system.out.println("the computer did paper"); if (ai == 3) system.out.println("the computer did scissors"); } else if (ai == 1 && userchoice == 1 || ai == 2 && userchoice == 2 || ai == 3 && userchoice == 3) { system.out.println("draw"); if (ai == 1) system.out.println("the computer did rock"); if (ai == 2) system.out.println("the computer did paper"); if (ai == 3) system.out.println("the computer did scissors"); } else if (ai == 1 && userchoice == 3 || ai == 2 && userchoice == 1 || ai == 3 && userchoice == 2){ system.out.println("you lose"); if (ai == 1) system.out.println("the computer did rock"); if (ai == 2) system.out.println("the computer did paper"); if (ai == 3) system.out.println("the computer did scissors"); } } } }
there few problems in code. have few unused variables
int rock = 1 ; // waarde van rock int paper = 2; // waarde van paper int scissor = 3;// waarde van scissor
which should
final int rock = 1; // waarde van rock final int paper = 2; // waarde van paper final int scissors = 3;// waarde van scissor
and used
if (ai == rock) ...
other problem while (playing == true)
notice =
assignment operator ==
comparing operator. in loop assigning true
playing
evaluated true
.
to avoid such problems mistake write =
instead of ==
use
while (playing){ }
btw should ask after each play if user want continue/quit game. can checking values -1
can represent "quit".
another problem never reassign value of ai
inside loop value can't change , same @ start of program. maybe move
int ai = 1 + (int) (math.random() * 3);
at start of while
loop let ai
new value.
btw2 instead of math.random()*3
kind of cryptic can use random
class , nextint(n)
method random integer in range [0; n)
0
(including)n
(excluding).
which can interpreted [0; n-1]
. code
random r = new random(); while(..){ int ai = r.nextint(3) + 1; // +1 because want move range [0; 2] [1; 3] ... }
it looks invoking
if (ai == 1) system.out.println("the computer did rock"); if (ai == 2) system.out.println("the computer did paper"); if (ai == 3) system.out.println("the computer did scissors");
in each of win/draw/lose conditions. in case can move out of each of these blocks
if (win conditions){ print win }else if (draw condition){ print draw }else if (lose condition){ print lose } <move code drawing computer hand here>
draw condition looks overly complex. looks draw achieved when ai
, userchoice
equal simple
if (ai == userchoice)
could replace
if (ai == 1 && userchoice == 1 || ai == 2 && userchoice == 2 || ai == 3 && userchoice == 3)
you can simplify other conditions using modulo %
operator.
Comments
Post a Comment