java - totals in a loop do not add up -
so decided skirt around card generator, poster on previous question. have had lot of ideas community , i'm trying not copy paste, , keep work genuine possible.
which why problems aren't fixed yet, , others have popped up.
that said, when run version, totals don't add properly, think on second hit goes bit haywire. love little more encouragement :)
import java.util.random; import java.util.scanner; class blackj { public static void main(string[] args) { random r = new random(); scanner keyboard = new scanner(system.in); string name; boolean playing = true; boolean notplaying = true; int card1 = 1 + r.nextint(11); int card2 = 1 + r.nextint(11); int dcard1 = 1 + r.nextint(11); int dcard2 = 1 + r.nextint(11); int ptotal = card1 +card2; int dtotal = dcard1 +dcard2; { system.out.println("welcome blackjack ! " ); system.out.println("score close 21 without going on win "); system.out.println("what name?"); name = keyboard.nextline(); system.out.println("hello " + name); system.out.println("let's play blackjack!"); system.out.println("the dealer shows: \n\t\t" +dcard1 ); system.out.println("your first card is: \n\t\t " +card1 ); system.out.println("your second card is: \n\t\t" +card2 ); system.out.println("giving grand total of: " +ptotal ); while (playing) { system.out.println("would (h)it or (s)tick?"); scanner hit1 = new scanner(system.in); string = hit1.nextline(); if(a.equals("h")) { int newcard = 1 + r.nextint(11); system.out.println("your next card " +newcard ); int pcurrent = ptotal +newcard; system.out.println("giving new total of "+pcurrent); if ((pcurrent >=22)) { system.out.println("you busted! \nsorry! lose"); playing = false; } playing = true; if(a.equals("s")) { system.out.println("you stick @ " +pcurrent ); system.out.println("now it's dealers turn\n dealer must draw until 17"); } } else { system.out.println("please press h or s"); } } } }
}
i modified code bit , works.
import java.util.random; import java.util.scanner; class blackjack { public static void main(string[] args) { random r = new random(); string name; scanner scannerin = new scanner(system.in); boolean playing = true; int card1 = 1 + r.nextint(11); int card2 = 1 + r.nextint(11); int dcard1 = 1 + r.nextint(11); int dcard2 = 1 + r.nextint(11); int ptotal = card1 +card2; int dtotal = dcard1 +dcard2; system.out.println("welcome blackjack ! " ); system.out.println("score close 21 without going on win "); system.out.println("what name?"); name = scannerin.nextline(); system.out.println("hello " + name); system.out.println("let's play blackjack!"); system.out.println("the dealer shows: \n\t\t" +dcard1 ); system.out.println("your first card is: \n\t\t " +card1 ); system.out.println("your second card is: \n\t\t" +card2 ); system.out.println("giving grand total of: " +ptotal ); while (playing) { system.out.println("would (h)it or (s)tick?"); string = scannerin.nextline(); if(a.tolowercase().equals("h")) { int newcard = 1 + r.nextint(11); system.out.println("your next card " +newcard ); ptotal = ptotal +newcard; system.out.println("giving new total of "+ptotal); if ((ptotal >=22)) { system.out.println("you busted! \nsorry! lose"); playing = false; } }else if(a.tolowercase().equals("s")) { system.out.println("you stick @ " +ptotal ); system.out.println("now it's dealers turn\n dealer must draw until 17"); } else { system.out.println("please press h or s"); } } scannerin.close(); } }
i made following changes:
- using 1 variable ptotal, sums up.
- removing 1 block { ... }, had no meaning
- capitalize class name. (because it's java convetion)
- ensure 1 scanner opened , closed within program.
- moving if checks 's' letter, reachable.
- modifiying if-else structure avoid unnecessary checks
- removing unused variable notplaying
- ensuring both capitalized , lower-case inputs accepted.
Comments
Post a Comment