0

我正在 Silverfrost FTN5 中构建一个基本程序,其中我从用户那里输入一个整数。
如果用户输入一个浮点值,它会抛出一个错误并且程序结束。有什么办法可以处理这个无效输入并要求用户输入有效输入?

4

1 回答 1

2

有几种方法。1)将输入读入字符串并解析字符串。如果字符串包含句点,则拒绝它并重新请求输入。如果字符串看起来有效,请从字符串中“内部”读取整数:read (string, *) IntVal. 2)更健壮,因为这可以优雅地检测所有错误:IOSTAT=在您的 read 语句中使用关键字。如果该值非零,则出现错误...重新请求输入。

编辑:代码示例:

program TestRead

integer :: number, ReadStatus

write (*, '( "Input integer: " )', advance="no" )
ReadInt: do
   read (*, *, iostat=ReadStatus) number
   if ( ReadStatus == 0 ) then
      exit ReadInt
   else
      write (*, '( / "READ ERROR: please re-input:" )' )
   end if
end do ReadInt

write (*, '( / "Value read: ", I0 )' )  number

end program TestRead
于 2013-06-19T10:08:33.917 回答