-2
首先,我很抱歉,因爲這個代碼看起來效率低下給我,但我的教授希望它這樣(的評論是她的)。我在這裏遇到很多問題,但似乎有一個核心問題,那就是當我運行程序時,它不會進入for循環。因此,我假設它沒有進入for循環所在的while循環,我不知道爲什麼。這裏是「修改」二十一點計劃,任何幫助表示讚賞:Java的酒杯不進入,而所有的循環
import java.util.Scanner;
import java.util.Random;
public class BlackJack {
enum Decisions
{
HIT, STAND, SURRENDER, QUIT, PLAY, NOTVALID;
// NOTVALID is used to re-ask to play again
}
enum Card {
ACE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, QUEEN, JACK, KING;
}
// Tells you if the Decision enum is valid or not
public static boolean containsDecision(String decision) {
for (Decisions d : Decisions.values()) {
if (d.name().equals(decision)) {
return true;
}
}
return false;
}
// Tells you what is the integer value of said Card enum
public static int getCardValue(int pick) {
if (pick == 0) {
return 1;
} else if (pick >= 10 && pick <= 12) {
return 10;
}
return pick + 1;
}
// 1 pts
public static int housePlay(int houseCardSum) {
int cardPick;
cardPick = -1;
while (houseCardSum <= 17)
{
getCardValue(cardPick);
houseCardSum = (cardPick + houseCardSum);
System.out.println("Hit from house! CARD: " + cardPick + " VALUE: " + houseCardSum);
}
return houseCardSum;
}
// 1.5 pts
public static void findWinner(int playerCardSum, int houseCardSum, Decisions decision) {
houseCardSum = housePlay(houseCardSum);
if ((playerCardSum > 21) || (houseCardSum > 21))
{
if (houseCardSum > 21)
{
System.out.println("Sorry you lose!");
}
else
{
System.out.println("You win!");
}
}
else if (decision == Decisions.SURRENDER)
{
System.out.println("You lose because you surrendered!");
}
else if (playerCardSum == houseCardSum)
{
System.out.println("Its a push (tie)!");
}
else if ((playerCardSum > houseCardSum) && (playerCardSum < 21))
{
System.out.println("You win!");
}
else if ((playerCardSum == 21) && (houseCardSum != 21))
{
System.out.println("Blackjack win!");
}
else
{
System.out.println("Sorry you lose!");
}
// if, else if, else, check playerCardSum, houseCardSum as well as if
// Decision equaled to SURRENDER
// print the House and You Hand at the end
// call housePlay function and assign the output to houseCard function
// iff not playerCardSum is not 21 and Decisions is not Surrender
// these below will be used moved them around freely in this function
// where you need too.
// put in correct branch sub
// statement
System.out.println("House Hand: " + houseCardSum + " Your Hand: " + playerCardSum); // this
// is
// printed
// out
// after
// all
// branch
// statements
// assessed
}
// 7.5pts
public static void main(String[] args) {
System.out.println("========== BlackJack ==========");
System.out.print("What is your name: ");
Scanner keyboard = new Scanner(System.in);
String playerName;
playerName = keyboard.nextLine();
System.out.println("Okay, " + playerName + ", let's play!");
Decisions decision = Decisions.PLAY ;
int cardPick;
cardPick = -1;
while (decision != Decisions.QUIT);
{
int playerSum;
int houseSum;
playerSum = 0;
houseSum = 0;
Card holeCard = null;
for (int i = 0; i < 3; i++)
{
Random newCard = new Random();
cardPick = newCard.nextInt(14);
playerSum = playerSum + getCardValue(cardPick);
System.out.println("Card: " + (Card.values()[cardPick]));
System.out.println("Sum of your hand: " + playerSum);
}
}
@flkes縮進沒問題,你在說什麼? – f1sh
分號花花公子。 '而(判決= Decisions.Quit!);'卸下';' – Redtama
環路(同時或以其他方式)的後跟一個碼塊(由包圍{})或一個語句。分號被認爲是一個有效的「無操作」語句,因此您不斷循環相同的條件,而無需在每個循環上運行任何代碼。 – Neil