:inputScores (
if %arrowInputCount% gtr %totalNumOfArrows% (
goto output
)
if %updateCount% == true (
set /a arrowInputCount+=1
) else (
set updateCount=true
)
cls
echo Input the score for arrow %arrowInputCount%^/%totalNumOfArrows%
echo Score range: 1-%bullseyeWorth%
echo Input 'x' for an X
echo Input 'm' for a miss
set /p tempScore=Input:
:testScore (
if %tempScore% == x (
rem user entered x
if %scoreString% == null (
set scoreString=%tempScore%
set /a totalScore+=%bullseyeWorth%
goto inputScores
) else (
set scoreString=%scoreString%^,%tempScore%
set /a totalScore+=%bullseyeWorth%
goto inputScores
)
) else if %tempScore% == m (
rem user entered m
if %scoreString% == null (
set scoreString=%tempScore%
goto inputScores
) else (
set scoreString=%scoreString%^,%tempScore%
goto inputScores
)
) else (
if %tempScore% gtr 0 if %tempScore% leq %bullseyeWorth% (
rem this will handle if the user enters a number
echo stub
pause
exit
) else (
rem user didn't enter a valid number
echo -
echo Invalid Input
pause
set updateCount=false
goto inputScores
)
)
)
)
:output (
rem program outputs the data
cls
echo stub
pause
exit
)
这是我的程序代码的违规片段,它应该包含射箭分数并输出文件,其中包含所有分数以及其他数据,例如总分数中的得分%。
为了使这个片段起作用,假设这些变量已经设置为这些值:
arrowInputCount=0
totalNumOfArrows=9
updateCount=0
bullseyeWorth=5
scoreString=null
当我运行文件时,它工作正常,直到我输入第三个分数,此时它崩溃了。我已经完成了对整个事情的桌面检查,我不明白为什么它会在输入的前2个分数中正常工作,然后在我进入第三个分数后崩溃。当用户输入数字时,我还没有编写代码来处理,所以在我的测试中我只输入'x'和'm'。我尝试输入前3个分数作为所有x,所有m和x和m的组合。在所有情况下,它在进入第三个分数后崩溃。
答案 0 :(得分:0)
由于scoreString中的逗号,其中一个if语句导致崩溃。我用""括起了对scoreString的引用。它现在有效。