StrtoIntDef无限循环

时间:2015-04-15 04:36:13

标签: string int pascal do-while

由于某些原因,当我调用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;

1 个答案:

答案 0 :(得分:1)

readln(choice_string)替换两个 read(choice_string)。如果您使用读取,下一次读取将不会跳到行尾并且不会查询新输入(如果使用read,通常第二次输入到字符串choice_string将为空,您可以验证这一点通过 writeln(choice_string))。