1

基本上,正在发生的事情是我的代码继续生成相同的数字。我已经关闭了 echo 来查看问题,并且实际的 %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 语句都是这样的。

4

2 回答 2

1

听起来您可能对变量扩展有疑问。假设你在循环中做这些事情。

尝试setlocal像这样在程序顶部添加:

setlocal ENABLEDELAYEDEXPANSION

在你endlocal的程序结束时:

endlocal

现在,当您需要使用在循环内发生变化的变量时,请使用!语法而不是%

if "!num!"=="24" (
  echo X
  set /p ans=
  if "!ans!"=="litin" (
    echo.
    echo Correct!
    pause>nul
    goto generate
  )
)
于 2013-09-25T04:50:38.190 回答
0

您可能希望EQU用于比较数字。所以试试这个

if "%num%" EQU 24 ( 
    ...
)
于 2013-09-25T04:54:08.083 回答