我为了跟踪射箭得分而制作的批处理文件在输入3分后仍然崩溃

时间:2017-11-17 09:15:42

标签: batch-file

: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的组合。在所有情况下,它在进入第三个分数后崩溃。

1 个答案:

答案 0 :(得分:0)

由于scoreString中的逗号,其中一个if语句导致崩溃。我用""括起了对scoreString的引用。它现在有效。