1

基本的に、私のコードは同じ数を生成し続けています。問題を確認するためにエコーをオフにすると、実際の %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 に答える