处理FORTRAN中的用户输入类型不匹配

时间:2013-06-19 09:27:54

标签: fortran

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

1 个答案:

答案 0 :(得分:2)

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

编辑:代码示例:

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