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