2013-09-25 64 views
1

基本上,我的代码基本上会继续生成相同的数字。我已将回音消除以查看问题,并且实际的%随机%变量正在改变,但它看起来像是数学,并且说“不,这实际上是这个数字。”这里的代码:批量随机数生成器 - 生成与之前相同的数

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语句,像她那样。

回答

1

听起来像你可能有一个变量扩展的问题。假设你在循环中做这些事情。

尝试在你的程序是这样的顶部添加setlocal

setlocal ENABLEDELAYEDEXPANSION 

而且endlocal在程序的结尾:

endlocal 

现在,当你需要使用一个变量,在循环中不断变化的,用!语法而不是%

if "!num!"=="24" (
    echo X 
    set /p ans= 
    if "!ans!"=="litin" (
    echo. 
    echo Correct! 
    pause>nul 
    goto generate 
) 
) 
+2

当启用延迟扩展时'''文字必须被转义:'echo正确^^!'。不仅循环需要延迟扩展。在IF语句中,级联命令或括号内的多个命令具有相同的问题。 – dbenham

0

您可能想要使用EQU来比较数字。所以试试这个

if "%num%" EQU 24 ( 
    ... 
)