If I would make one method to generate a card, should I use an other method to determine the value and one to determine if it's a ace or not? Acquiring a Blackjack will mean that you'll be able to benefit from a payout of 3 to 2 on your bet. Could I just copy the Javacode in the message? Yes, to removing the deck from the hand, but why recommend they use a singleton? Played with 1 deck of cards. With a Hand class, you would already separate out some of it.
Experts Exchange Solution brought to you by Enjoy your complimentary solution view. Get every solution instantly with Premium. Start your 7-day free trial.
I wear a lot of hats Mick Barry Java Developer Commented: You need to keep the hand in a container such as a List and iterate it in paint: Experts Exchange Solution brought to you by Your issues matter to us. It's more than this solution. Get answers and train to solve all your tech problems - anytime, anywhere.
Try it for free Edge Out The Competition for your dream job with proven skills and certifications. Get started today Stand Out as the employee with proven skills. Start learning today for free Move Your Career Forward with certification training in the latest technologies.
Start your trial today. Aces are 11 for now. Takes into account the value of aces. What is your name? Aces are taken into account. Jared 1 4 Class Structure A Hand class might be useful. It can calculate and store the hand value. This would also avoid the duplication you currently have calcHandValue and Hit.
Your Dealer class contains a lot of code that I would not place there. It contains the dealer AI when does the dealer hit? With a Hand class, you would already separate out some of it. I would also remove all the prints they make code reuse difficult, and lead to bad code structure , and separate the AI logic to it's own class this would make it easier to change the rules, because they are all in one place.
Your Blackjack class also does way too much. It is the player as well as the game, which violates the single responsibility principle. In this case, your Dealer and your Blackjack class contain a lot of duplication. Mainly because they both represent a blackjack player the dealer and the player. A generic Player class might be helpful, from which Dealer and HumanPlayer extend.
Misc your whole shuffle function can be replaced by Collections. Why does your Dealer class have hand and aHand? This seems unnecessary and confusing. It seems mostly internally consistent that's the important part , but does not really match what most Java programmers are used to. Do you mind explaining a little bit more about that point? Jared Input would just gather the action which could be an enum; hit, split, etc , and output would output everything.
The main reason is that it separates those things from the rest. It makes your code more readable, and especially more reusable. You can run your game in a BlackJackGame class, which should maintain the game loop which would call other classes to deal a hand, get input, check end condition and apply results, after which it deals the next hand. All the rest should ideally happen elsewhere.
Very nicely done, well deserved victory! There's a quite a lot to improve on this. Here are a couple of tips to get your started. Excessive comments Do these comments add anything new that isn't clear already?
Making Card immutable Will it make sense for rank , suit and value to change in the lifetime of a Card instance? Refer to types by interfaces You declare several lists like this: If i use auto format, is this the way programs are usually formatted?