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

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

python - NameError: name 'subprocess' is not defined -