ユーザーから整数を入力するSilverfrost FTN5で基本的なプログラムを構築しています。
ユーザーが float 値を入力すると、エラーが発生してプログラムが終了します。この無効な入力を処理して、ユーザーに有効な入力を求める方法はありますか?
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 に答える