【发布时间】:2020-02-10 12:03:50
【问题描述】:
用户为赌徒输入整数值开始资金 用户输入赌徒所需资金的整数值 - 如果赌徒的资金达到此值,他将退出游戏 用户输入要执行的试验次数的整数值 - 每个试验将包含足够的游戏,以将赌徒的资金减少到零或将其增加到所需的资金 声明一个整数变量(设置为零)以跟踪获胜次数 显然,解决方案将包括嵌套循环结构和选择结构 第一个(外循环)将循环执行所需的试验次数 设置现金等于股份 第二个(内循环)将模拟一张纸牌游戏的结果。只要现金大于零且小于所需资金,此循环就会重复 假设赌徒赢得比赛的机会小于 50% 使用随机数生成器来确定赌徒是否赢得了比赛 如果赌徒赢了,在他的现金上加 1.00 美元 否则从他的现金中减去 1.00 美元 在内循环结束时(运行一场游戏) - 如果现金的价值等于赌徒想要的资金,那么赢钱加一 外循环停止后,将试验次数中的获胜次数和获胜的百分比打印到屏幕上。
试图让游戏模拟器计算总起始金额达到结束金额后赢得的游戏数量。它的一部分有效,但不是全部 那么它应该执行 x 次。 https://github.com/samuelatlas/gamesimulation/tree/master ''' // 演示 Java for 循环
import java.util.Scanner; // import a scanner c
import java.security.SecureRandom; // imports a secure random class
class newLoopTest1
{
public static void main(String[] args)
{
// OUTER -------LOOP
Scanner input = new Scanner(System.in);
System.out.print("Enter the start bankroll ");
int startBankRoll = input.nextInt();
//int desiredBankRoll = 5;
System.out.print("Enter the desired bankroll ");
int desiredBankRoll = input.nextInt();
System.out.print("Enter the number of trials ");
int numberTrials = input.nextInt();
//int startBankRoll = 2;
int i = 1;
int current = startBankRoll;
int wins = 0;
//int numberTrials = 0;
//OUTER----LOOP
while(i <= numberTrials)
//while(numberTrials <= 4)
{
i++;
int innerloop = 0;
System.out.println("printing from outer");
//INNER----LOOP
while((startBankRoll < desiredBankRoll) && (startBankRoll > 0))
{
SecureRandom randomNumber = new SecureRandom();
int number = randomNumber.nextInt(101);
System.out.println("Before hand start amount of " +
startBankRoll + " end amount of " + desiredBankRoll);
System.out.println("Rolled " + number);
if( number <= 50)
{
System.out.println("lost");
startBankRoll--;
System.out.println("After hand start amount of " +
startBankRoll + " end amount of " + desiredBankRoll);
}
else
{
System.out.println("won");
startBankRoll++;
System.out.println("After hand start amount of " +
startBankRoll + " end amount of " + desiredBankRoll);
}
System.out.println(" Outerloop ran " + numberTrials + "
Innerloop ran " + innerloop);
innerloop++;
//INNER----LOOP
}
//OUTER----LOOP
numberTrials += 1;
//wins++;
System.out.println("Current" + current);
if(startBankRoll == desiredBankRoll)
{
wins += 1;
startBankRoll = current;
System.out.println("wins" + wins);
}
else
{
startBankRoll = current;
System.out.println(" lost all cash");
}
//OUTER----LOOP
}
int totalWins = (wins/(numberTrials-1));
System.out.println("Won " + wins + " out of " + (numberTrials-1));
//System.out.println("total percent" + wins/totalWins );
}
}
【问题讨论】:
-
从包含您的 while 语句的行的末尾删除分号 (;)。你还想具体一点。不要说“其中一些有效”。我们不知道你在说什么。 确切地说什么是有效的。同样,确切地说什么不起作用。
-
内部工作。它需要一个随机数,如果数字小于 50,则从起始数量中取 1。如果它高于 50,它会在起始金额上加一。一旦起始金额等于结束金额或等于零,它应该向计数器加一。这就是有效的部分。我需要它将起始值重置为原始起始量并再次运行相同的模拟,直到它达到零或等于结束量。我有一个 gethub 的链接,其中包含所有程序规范。它在链接中。
-
我确实删除了 ;但编译器告诉我内置它
-
是的,抱歉,您使用的是 do...while,所以分号是合适的。明天早上我会看看你的代码。
标签: java loops for-loop if-statement while-loop