GOOGLE ADS

среда, 27 апреля 2022 г.

Как можно было бы использовать переменную, которая находится внутри цикла for, вне цикла for?

Я пытаюсь закодировать карточную игру блэкджек. Идея состоит в том, чтобы я играл против бота, который считает карты. Во-первых, я должен создать игру. В этой игре есть система ставок. Ставка принимается перед раздачей, но ее можно изменить во время игры. Когда я ввожу пользовательский ввод, чтобы запросить ставку, я делаю это в цикле for. Это код для определения ставки!

 double money = 100.00;
System.out.println("You have $" +money +"0. How much would you like to bet? ");
double bet = scanner1.nextDouble();
double nmoney = money - bet;

if(nmoney < 0) {
System.out.println("You do not have enough money");
} else {
System.out.print("You now have $");
System.out.printf("%.2f", nmoney);
}

Я хотел бы снова использовать переменную «ставка». (В случае удвоения ставки делается следующее. Ставка удваивается, и игрок получает только одну карту.) Следующий код представляет собой этот раздел.

 char move = scanner1.next().charAt(0);
if(move == 'H' || move == 'h') {
String p2 = cards[(int)(Math.random()*cards.length)];
list.remove(p2);
cards = list.toArray(new String[0]);
System.out.println("Player gets " +p2);
}
if(move == 'S' || move == 's') {
// break;
}
if(move == 'D' || move == 'd') {
bet = bet * 2;
nmoney = nmoney - bet;
String d1 = cards[(int)(Math.random()*cards.length)];
list.remove(d1);
cards = list.toArray(new String[0]);
System.out.println("Player gets " +d1);


//break;
}
for(int i = 0; i < 1; i--) {
if(move == 'D' || move == 'd') {
break;
}
if(move == 'S' || move == 's') {
break;
}
System.out.println("");
System.out.println("Would you like to hit(H), or Stand(S)");
char move2 = scanner1.next().charAt(0);
if(move2 == 'H' || move2 == 'h') {
String p3 = cards[(int)(Math.random()*cards.length)];
list.remove(p3);
cards = list.toArray(new String[0]);
System.out.println("Player gets " +p3);
}

if(move2 == 'S' || move == 's') {
break;
}


Мой вопрос: как я могу повторно использовать переменную ставку вне цикла for или как я могу переделать код, чтобы снова использовать ставку?

Спасибо!

import java.util.*;
public class CardPlayer {





public static void main(String[] args) {

Scanner scanner1 = new Scanner(System.in);
String [] cards = {
"Ace of Spades", "Two of Spades","Three of Spades","Four of Spades", "Five of Spades", "Six of Spades", "Seven of Spades", "Eight of Spades", "Nine of Spades", "Ten of Spades", "Jack of Spades", "Queen of Spades", "King of Spades",
"Ace of Hearts", "Two of Hearts", "Three of Hearts", "Four of Hearts", "Five of Hearts", "Six of Hearts", "Seven of Hearts", "Eight of Hearts", "Nine of Hearts", "Ten of Hearts", "Jack of Hearts", "Queen of Hearts", "King of Hearts",
"Ace of Clubs", "Two of Clubs", "Three of Clubs", "Four of Clubs", "Five of Clubs", "Six of Clubs", "Seven of Clubs", "Eight of Clubs", "Nine of Clubs", "Ten of Clubs", "Jack of Clubs", "Queen of Clubs", "King of Clubs",
"Ace of Diamonds", "Two of Diamonds", "Three of Diamonds", "Four of Diamonds", "Five of Diamonds", "Six of Diamonds", "Seven of Diamonds", "Eight of Diamonds", "Nine of Diamonds", "Ten of Diamonds", "Jack of Diamonds", "Queen of Diamonds", "King of Diamonds",
};
double money = 100.00;


System.out.println("You have $" +money +"0. How much would you like to bet? ");
double bet = scanner1.nextDouble();
double nmoney = money - bet;


if(nmoney < 0) {
System.out.println("You do not have enough money");
} else {
System.out.print("You now have $");
System.out.printf("%.2f", nmoney);
// break;
}


String Pldf1 = cards[(int)(Math.random()*cards.length)];
List<String> list = new ArrayList<String>(Arrays.asList(cards));
list.remove(Pldf1);
cards = list.toArray(new String[0]);
String Pldf2 = cards[(int)(Math.random()*cards.length)];

list.remove(Pldf2);
cards = list.toArray(new String[0]);
String Codf1 = cards[(int)(Math.random()*cards.length)];

list.remove(Codf1);
cards = list.toArray(new String[0]);
String Codf2 = cards[(int)(Math.random()*cards.length)];

list.remove(Codf2);
cards = list.toArray(new String[0]);
String Dddf0 = cards[(int)(Math.random()*cards.length)];

list.remove(Dddf0);
cards = list.toArray(new String[0]);
String Dudf0 = cards[(int)(Math.random()*cards.length)];

list.remove(Dudf0);
cards = list.toArray(new String[0]);


System.out.println("\nPlayer Gets Computer Gets");
System.out.println();
System.out.println(Pldf1 +"\t " +Codf1);
System.out.println(Pldf2 +"\t " +Codf2);
System.out.println(" Dealer Gets " +Dudf0);
System.out.println("");
System.out.println("Would you like to hit(H), Stand(S), or Double Down (D)");
char move = scanner1.next().charAt(0);
if(move == 'H' || move == 'h') {
String p2 = cards[(int)(Math.random()*cards.length)];
list.remove(p2);
cards = list.toArray(new String[0]);
System.out.println("Player gets " +p2);
}
if(move == 'S' || move == 's') {
// break;
}
if(move == 'D' || move == 'd') {
bet = bet * 2;
nmoney = nmoney - bet;
String d1 = cards[(int)(Math.random()*cards.length)];
list.remove(d1);
cards = list.toArray(new String[0]);
System.out.println("Player gets " +d1);


//break;
}
for(int i = 0; i < 1; i--) {
if(move == 'D' || move == 'd') {
break;
}
if(move == 'S' || move == 's') {
break;
}
System.out.println("");
System.out.println("Would you like to hit(H), or Stand(S)");
char move2 = scanner1.next().charAt(0);
if(move2 == 'H' || move2 == 'h') {
String p3 = cards[(int)(Math.random()*cards.length)];
list.remove(p3);
cards = list.toArray(new String[0]);
System.out.println("Player gets " +p3);
}

if(move2 == 'S' || move == 's') {
break;
}

}

}
}


Решение проблемы

Вы не можете. Вам нужно определить переменную вне цикла. Определение его вне цикла не помешает вам использовать его, как обычно, внутри цикла.

while (condition) {
int data = something;

// do stuff
}
// Fails because data is now out of scope.
useData(data);

Затем вы можете изменить его на что-то вроде этого, где вы определяете dataдо запуска цикла, чтобы его можно было использовать позже.

// Define the variable outside the loop
int data = 0;
while (condition) {
// re-assign value instead of creating new variable
data = something;

// do stuff
}
// Succeeds since data is still within scope
useData(data);

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...