java - Program ignoring "If Else" and printing everything -


i'm trying create random number generator program tracks player's wins, losses, winning percentage , total winnings. logic of program player gets 3 chances per session , computer generates random number player needs guess or rather should match.

i've tried use if & else statements tell user if needs guess higher number or lower number within 3 allowed guesses. what's happening ignores conditions , prints 3 chances @ once , ends game.

any inputs on highly appreciated.

game class:

import java.util.scanner;  public class game {      player player;     luckynumbergenerator lng;      public game() {         player = new player();         lng = new luckynumbergenerator();     }      public void eventloop() {         scanner scanner = new scanner(system.in);         int choice = 0;         boolean exit = false;         while (!exit) {             system.out.println("welcome guessing game");             system.out.println("==============================");             system.out.println("(1) set new player");             system.out.println("(2) play 1 round");             system.out.println("(3) player win statistics");             system.out.println("(4) display game help");             system.out.println("(5) exit game");             system.out.println("choose option: ");              try {                 choice = integer.parseint(scanner.nextline());                 if (choice < 1 || choice > 5) {                     system.err.println("error : choose option between 1 , 5");                     choice = 0;                 }             } catch (numberformatexception e) {                 system.err.println("error : choose option between 1 , 5");                 choice = 0;             }              switch (choice) {                 case 1:                     createnewplayer(scanner);                     break;                 case 2:                     guessnumber(scanner);                     break;                 case 3:                     printstatistics();                     break;                 case 4:                     printhelp();                     break;                 case 5:                     exit = true;             }         }         scanner.close();     }      public void printhelp() {         system.out.println(" ");     }      public void printstatistics() {         try {             if (player.getname() == null || player.getname().trim().length() < 1) {                 system.out.println("player has not been set up!");             } else {                 system.out.println("player statistics are: ");                 system.out.println("name: " + player.getname());                 system.out.println("wins: " + player.getgameswon());                 system.out.println("losses: " + player.getgameslost());                 system.out.println("amount won far: " + player.gettotalwinnings());                 system.out.println("winnings percentage : "                         + (((player.getgameswon()) / (player.getgameswon() + player.getgameslost())) * 100));             }         } catch (arithmeticexception ae) {             system.out.println("wins , loss both 0: divide 0 exception");         }     }      public void guessnumber(scanner scanner) {         int compguess = lng.generate();         int userguess = 0;         int numattempts = 0;         int cnum = lng.generateconsole();         {             try {                 system.out.println("guess number between 1-100: ");                 userguess = integer.parseint(scanner.nextline());                 if (userguess < 1 || userguess > 100) {                     system.err.println("error : guess must between 1-100");                 }             } catch (exception e) {                 system.err.println("error : guess must between 1-100");             }         } while (userguess < 1 && userguess > 100);         {             if (userguess > compguess) {                 system.out.println("your guess is: " + userguess + "and random number: " + compguess);                 system.out.println("sorry, need go lower  :");             } else if (userguess < compguess) {                 system.out.println("your guess is: " + userguess + "and random number: " + compguess);                 system.out.println("sorry, need go higher  :");             }             numattempts++;              if (userguess == compguess) {                 system.out.println("lucky number : " + compguess + "your  guess : " + userguess);                 system.out.println("congratulations won " + 10 + "$");                 player.setgameswon(1);                 player.settotalwinnings(10);             }              if (userguess != compguess && (userguess <= (compguess + 5)) && (userguess >= (compguess - 5))) {                 system.out.println("lucky number : " + compguess + "your final guess : " + userguess);                 system.out.println("congratulations won " + cnum + "$");                 player.settotalwinnings(5);             } else if (userguess != compguess) {                 system.out.println("lucky number : " + compguess + "your  guess : " + userguess);                 system.out.println("sorry better luck next time");                 player.setgameslost(1);                 player.settotalwinnings(-1);             }         } while (userguess != compguess && numattempts < 3);     }      public void createnewplayer(scanner scanner) {         string name = null;         {             try {                 system.out.println("enter name of player: ");                 name = scanner.nextline();                 if (name.isempty()) {                     system.err.println("name cannot empty");                 }             } catch (exception e) {}         } while (name.isempty());         this.player = new player(name);     }      public static void main() {         game game = new game();         game.eventloop();     }  } 

do {         try {             system.out.println("guess number between 1-100: ");             userguess = integer.parseint(scanner.nextline());             if (userguess < 1 || userguess > 100) {                 system.err.println("error : guess must between 1-100");             }         } catch (exception e) {             system.err.println("error : guess must between 1-100");         }      } while(userguess < 1 && userguess > 100);//incorrect  //correct condition -> while(userguess < 1 || userguess > 100);  

a number cannot less 1 , greater 100 @ same time.

edit 1 : in 2nd loop following 2 condition

1) if (userguess != compguess && (userguess <= (compguess + 5))             && (userguess >= (compguess - 5)))   2)else if (userguess != compguess) 

should evaluated if number of guesses player exceeds number of attempts, therefore 2 if conditions should written outside loop.

also need first while loop keep user input valid between 1-100, , second while loop inside it.

the final code this.

    {          {             try {                 system.out.println("guess number between 1-100: ");                 userguess = integer.parseint(sc.nextline());                 if (userguess < 1 || userguess > 100) {                     system.err                             .println("error : guess must between 1-100");                 }             } catch (exception e) {                 system.err                         .println("error : guess must between 1-100");             }         } while (userguess < 1 || userguess > 100);          system.out.println(" " + userguess);          if (userguess > compguess) {             system.out.println("your guess is: " + userguess                     + "and random number: " + compguess);             system.out.println("sorry, need go lower  :");          }         if (userguess < compguess) {             system.out.println("your guess is: " + userguess                     + "and random number: " + compguess);             system.out.println("sorry, need go higher  :");             system.out.println("if 1");         }         numattempts++;          if (userguess == compguess) {             system.out.println("lucky number : " + compguess                     + "your  guess : " + userguess);             system.out.println("congratulations won " + 10 + "$");             // player.setgameswon(1);             // player.settotalwinnings(10);          }      } while (userguess != compguess & numattempts < 3);      if (userguess != compguess && (userguess <= (compguess + 5))             || (userguess >= (compguess - 5))) {         system.out.println("lucky number : " + compguess                 + " final guess : " + userguess);         // system.out.println("congratulations won " + cnum + "$");         // player.settotalwinnings(5);      } else if (userguess != compguess) {         system.out.println("lucky number : " + compguess                 + "your  guess : " + userguess);         system.out.println("sorry better luck next time");         // player.setgameslost(1);         // player.settotalwinnings(-1);      }  } 

Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -