Java 为什么for循环中的这个变量没有被重置为&x27;什么是初始值?

Java 为什么for循环中的这个变量没有被重置为&x27;什么是初始值?,java,for-loop,variables,while-loop,variable-assignment,Java,For Loop,Variables,While Loop,Variable Assignment,我有这个程序代码,它试图创建类似蒙特卡罗模拟的东西。基本上,赌徒从给定的英镑赌注开始,在破产或达到目标之前下注1英镑 程序代码按预期工作,但是,我遇到的问题是语句“int cash=stack”;我想知道变量“cash”如何在每次迭代中正确更新 我不明白为什么它没有重置回初始值“stake”,这是主for循环之外的用户输入。例如,如果目标是500,股份是100,为什么现金不总是保持100,如果是,它将如何达到500的目标 public static void monteCarlo() {

我有这个程序代码,它试图创建类似蒙特卡罗模拟的东西。基本上,赌徒从给定的英镑赌注开始,在破产或达到目标之前下注1英镑

程序代码按预期工作,但是,我遇到的问题是语句“int cash=stack”;我想知道变量“cash”如何在每次迭代中正确更新

我不明白为什么它没有重置回初始值“stake”,这是主for循环之外的用户输入。例如,如果目标是500,股份是100,为什么现金不总是保持100,如果是,它将如何达到500的目标

public static void monteCarlo() {
    Scanner input = new Scanner(System.in);
    System.out.println("Please enter stake, goal, " + " and number of tries");
    int stake = input.nextInt();
    int goal = input.nextInt();
    int tries = input.nextInt();
    int wins = 0;
    // repeat experiment
    for (int i = 0; i < tries; i++) {
        // do one gambler's ruin experiment
        int cash = stake;
        while (cash > 0 && cash < goal) {
            // flip coin and update
            if (Math.random() < 0.5) cash++;
            else cash--;
        }

        if (cash >= goal) {
            wins++;
        }
    }

    System.out.println(wins + " wins of " + tries);
}
public static void monteCarlo(){
扫描仪输入=新扫描仪(System.in);
System.out.println(“请输入桩号、目标“+”和尝试次数”);
int stack=input.nextInt();
int-goal=input.nextInt();
int trys=input.nextInt();
int=0;
//重复实验
for(int i=0;i0&&现金<目标){
//抛硬币和更新
if(Math.random()<0.5)cash++;
否则现金--;
}
如果(现金>=目标){
wins++;
}
}
System.out.println(wins+“wins of”+尝试次数);
}
if(Math.random()<0.5)cash++;
在这里,
现金
增加的几率为50%。平均而言,
现金
的价值基本保持不变

要想从100到500获得
现金
,你需要在一场概率为50%的游戏中赢得大约
400


继续运行程序,您可能会很幸运:)

int cash=stack
(重新)将cash变量设置为始终相同的初始值

如果您输入5次试验和12个桩,则

  • 现金重置为12
  • while循环在每次试用时都会增加/减少现金
  • 直到达到目标或没有更多的现金
  • 从1开始的步骤。到3。将再次呼叫5次。5次中的每一次都将从12开始,但
    cash++
    cash--
    指令将更改它,直到达到最终条件

    运行下面的详细变量可能会帮助您更清楚地了解它

    包so20190412;
    导入java.util.Scanner;
    公共类MC{
    公共静态void main(字符串[]args){
    try(扫描仪输入=新扫描仪(System.in);){
    System.out.println(“请输入桩号、目标“+”和尝试次数”);
    int stack=input.nextInt();
    int-goal=input.nextInt();
    int trys=input.nextInt();
    蒙特卡洛(赌注、目标、尝试);
    }
    }
    公共静态无效蒙特卡洛(最终整数赌注、最终整数目标、最终整数尝试){
    System.out.println(“以“+桩开始);
    System.out.println(“目标是”+目标);
    System.out.println(“将尝试:“+trys+”次”);
    int=0;
    //重复实验
    for(int i=0;i0&&现金<目标){
    //抛硬币和更新
    if(Math.random()<0.5){
    现金++;
    System.out.println(“赢!多拿一欧元-新现金是”+现金);
    }
    否则{
    现金--;
    System.out.println(“损失一欧元-新现金为”+现金);
    }
    }
    如果(现金>=目标){
    wins++;
    System.out.println(“现金超过目标-添加胜利!”);
    }
    System.out.println(“迭代结束-赌注:+赌注+”现金:+现金+”获胜:+获胜);
    }
    System.out.println(wins+“wins of”+尝试次数);
    }
    }
    

    希望这能澄清情况

    到底是什么问题?
    现金
    在for循环中重置,在while循环中递增或递减。“你还不明白什么?”迈克尔:是的,但如果现金在for循环中被重置,那么它将永远无法达到目标。比如说,现金一开始是100英镑,目标是500英镑。如果在for循环的每次迭代中将其重置为100,它将如何达到此目标?@RayZe,
    cash
    在while循环中被修改,玩家要么达到目标,要么在while循环中崩溃。然后,在玩家赢或输之后,for循环点击下一个迭代并重置
    现金
    。for循环代表N个“游戏”。在N个游戏中的每一个游戏中,现金从
    赌注开始,然后(在while循环中)增加或减少,直到没有剩余,或者达到目标。然后下一个游戏开始(for循环的下一次迭代),现金被重置。
    
     if (Math.random() < 0.5) cash++;