gpt4 book ai didi

do-while 不会在第一个 'q' 上退出

转载 作者:行者123 更新时间:2023-12-02 03:29:47 28 4
gpt4 key购买 nike

所以我正在用 D 开发一个简单的基于文本的小游戏,以获得一些使用该语言的经验。这是我目前正在努力解决的一个 do-while 循环:

do{
writeln("a. Advance 1 year\tc. Advance 10 years\tq. Quit");
writeln("b. Advance 5 years\td. Modify faction");

input = chomp(stdin.readln());

switch(input){
...
default:
break;
}
writeln(input[0]);
}while(input[0] != 'q');

现在我遇到的问题是当我点击 q 并进入循环时并没有退出。它只是继续前进。但是在第一次输入 q 之后,另一个 q 将终止循环。 writeln 在那里作为完整性检查,它打印出我输入的字符,与输入的完全一样。我觉得我快疯了,但这可能只是一个简单的输入错误或者你们会立即发现的东西。 switch 语句中的任何内容都不会修改“输入”。

编辑:好的,有些人一直要求查看所有代码。这是:http://pastebin.com/A7qM5nGW

当我在 switch 修改输入中什么也没说时,这是为了隐藏我还没有在 switch 中写任何东西的事实。在添加更复杂的东西之前,我一直试图让退出部分正常工作。另外,这是我运行它的示例文件:http://pastebin.com/4c2f4Z5N

最佳答案

好的,我的 friend 找到了。它与 while 循环本身无关。我暂时忘记了 args[0] 是程序的名称。所以它实际上是空着运行一次父循环,然后退出,然后运行适当的循环。它通过像这样制作父循环来修复......

foreach(filename; args[1..$]){
...
do{
...
while(input[0] != 'q');
}

相对于:

foreach(filename; args){

等...

关于do-while 不会在第一个 'q' 上退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27663078/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com