由于某些原因,当我调用strtointdef函数时,我的程序卡住了重复这个循环。看起来好像当我为我的循环输入输入时,它首先使用我提供的输入运行循环,然后使用strtointdef的失败输入再次自动启动循环。我该如何解决这个问题?
while(choice < 5) AND (choice > 0) do
begin
write('input: ');
read(choice_string);
choice := StrToIntDef(choice_string, 6);
writeln(choice);
if (choice = 6) then
begin
writeln('Invalid input!');
write('input:');
read(choice_string);
choice := StrToIntDef(choice_string, 5);
end;
end;
答案 0 :(得分:1)
用 readln(choice_string)替换两个 read(choice_string)。如果您使用读取,下一次读取将不会跳到行尾并且不会查询新输入(如果使用read,通常第二次输入到字符串choice_string将为空,您可以验证这一点通过 writeln(choice_string))。