因此,我正在研究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当我在开关修改输入中没有说什么时,它隐藏了我还没有在开关中写任何东西的事实。在添加更复杂的东西之前,我一直试图让戒烟部分正常工作。另外,这是我运行它的示例文件:http://pastebin.com/4c2f4Z5N
答案 0 :(得分:1)
好的,我的朋友找到了。它与while循环本身无关。我简单地忘了args [0]是程序的名称。所以它实际上只运行一次父循环,然后实际退出,然后运行适当的循环。通过使父循环像这样修复...
foreach(filename; args[1..$]){
...
do{
...
while(input[0] != 'q');
}
而不是:
foreach(filename; args){
等...