2013-07-18 3 views
0

У меня были проблемы с этим кодом на некоторое время. Пожалуйста, взгляните и скажите мне, что не так, поэтому я могу это исправить. Этот код будет частью конкуренции xprize!Почему моя партия, если утверждение не работает?

echo [Math] 
echo. 
echo. 
echo. 
echo   Question 1 
echo. 
echo. 
echo. 
echo  If Mary goes to the market and buys three 
echo  bananas for two dollars each, how much 
echo  did she spend altogether? 
echo. 
echo. 
echo  (A) $3 
echo  (B) $6 
echo  (C) $5 
echo  (D) $1 
echo. 
echo. 
echo. 
set /p ANSWER01=Answer: 
cls 
goto results 


:results 
set /a "COUNTER=0" 

вот что я не могу понять: я не знаю, как изменить значение переменной в случае заявления

if %ANSWER01%==b(
    set /a "COUNTER=COUNTER+1" 
) 
echo %COUNTER% 
pause 

ответ

0

Вам нужно пространство между b и (

AAMOI, if /i сделает матч нечувствительным к регистру.

+0

@PeterWrite как я сделать это так, если пользователь может делать esn't выбрать «b» он делает «echo% COUNTER» – user2593700

+0

Ваш код работает и перекликается с значением 'counter' (0), если пользователь не выбирает' b'. ОДНАКО, скорее всего, лучше использовать 'if/i '% answer01%" == "b" ("чтобы пользователь мог просто нажать' ENTER'. Если пользователь НЕ ПОТЕРЯЕТ нарушить программу, код будет работать довольно счастливо - если вы добавите ПРОСТРАНСТВО между 'b' и' ('как я уже сказал. – Magoo

1

Вы должны использовать команду выбора с:

Choice /c abcd /m "Answer: " 
set ANSWER01=%errorlevel% 

также для вашего заявления, если только это сделать, как так:

if %ANSWER01% equ 2 set /a "COUNTER=COUNTER+1" 

Это было бы проще и лучше.

Примечание:equ 2, если вы используете choice команду

0

Здравствуйте, не нужно включить опцию замедленного расширения и дать пространство, если предложение в скобках:

Ваш код что-то вроде:

set /a counter=0 

setlocal ENABLEDELAYEDEXPANSION 

echo [Math] 
echo. 
echo. 
echo. 
echo   Question 1 
echo. 
echo. 
echo. 
echo  If Mary goes to the market and buys three 
echo  bananas for two dollars each, how much 
echo  did she spend altogether? 
echo. 
echo. 
echo  (A) $3 
echo  (B) $6 
echo  (C) $5 
echo  (D) $1 
echo. 
echo. 
echo. 
set /p ANSWER01=Answer: 
cls 
goto results 

:results 

if %ANSWER01%==b (
    set /a counter=counter+1 
) 
echo %counter% 
pause 

endlocal 
+0

Ум, нет - не тот случай. Вам нужна только« delayedexpansion », если переменная изменена WITHIN« block »(последовательность заключенных в скобки инструкций), и вы хотите получить доступ к измененному значению (если вам нужно использовать '! var!' вместо '% var%' - '! var!' для измененного значения, '% var%' для значение перед вводом блока) – Magoo

Смежные вопросы