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