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
Post a Comment