基本上,正在发生的事情是我的代码继续生成相同的数字。我已经将回声关闭以查看问题并且实际的%random%变量正在发生变化,但它似乎在进行数学计算并说“不,它确实是这个数字。”这是代码:
set /a num=(24 * %random%) / 32768 + 1
我已经自己测试了这个代码并且工作正常。但是,当我将if语句*添加到代码中时,它就变得非常糟糕。所以,问题是,我该如何解决这个问题以及它为什么会发生?
*我的if语句:
if "%num%"=="24" (
echo X
set /p ans=
if "%ans%"=="litin" (
echo.
echo Correct!
pause>nul
goto generate
)
)
我的所有if语句都是这样的。
答案 0 :(得分:1)
听起来你可能有变量扩展的问题。假设你在循环中做这些事情。
尝试在程序顶部添加setlocal
,如下所示:
setlocal ENABLEDELAYEDEXPANSION
在您的计划结束时endlocal
:
endlocal
现在,当您需要使用在循环内更改的变量时,请使用!
语法而不是%
:
if "!num!"=="24" (
echo X
set /p ans=
if "!ans!"=="litin" (
echo.
echo Correct!
pause>nul
goto generate
)
)
答案 1 :(得分:0)
您可能希望使用EQU
来比较数字。所以试试这个
if "%num%" EQU 24 (
...
)