以下代码无效。无论我输入什么,只会返回错误,然后返回Retry
。
@echo off
:maths
set /p Mathsa="first number? "
echo your first number is %Mathsa%
:retry
set /p Mathso="operator?(+-*/) "
if "%Mathso%" ==* GOTO run
if "%Mathso%" ==/ GOTO run
if "%Mathso%" ==+ GOTO run
if "%Mathso%" ==- GOTO run
echo Error, wrong operator. & goto retry
:run
set /p Mathsb="Second Number? "
set /a Mathsans=%Mathsa%%Mathsp%%Mathsb%
echo %Mathsans%
pause
我完全不知道为什么会这样做。这是一个学校项目,你可以给予任何帮助!
答案 0 :(得分:5)
这是Mathso
变量周围的引号。将它们全部更改为使用相等的两个方面的引号,例如:
if "%Mathso%" == "+" GOTO run
他们应该做得更好。
原因是cmd
与UNIXy shell不完全相同。引号保留在相等的左边,这样你最终得到的是:
if "+" == + then ...
且"+"
不等于+
。
通过在两边加上引号,它变为:
if "+" == "+" then ...
是是真的。
而且,正如Aacini在评论中指出的那样,您的计算set
对运算符使用了错误的变量。你应该改变:
set /a Mathsans=%Mathsa%%Mathsp%%Mathsb%
成:
set /a Mathsans=%Mathsa%%Mathso%%Mathsb%
^
|
see here