在 Fortran 95 中重新执行语句
Re-executing statements in Fortran 95
抱歉这个菜鸟问题,但我需要一些帮助来弄清楚如何在逻辑块完成检查用户输入后return执行回到子例程的开始。
Program FibSequence
Integer(2) :: n_terms
print*, "Please Enter number 0-99"
read*,n_terms
call check_term()
End Program
Subroutine check_term()
if n_terms <= 0 then
!print stuff
read*, n_terms
return
else if n_terms > 99 then
!print stuff
read*, n_terms
return
else
print*, "you have chosen " , n_terms
end
程序执行成功,但没有做它应该做的事情。
我怀疑程序会进入检查,然后当它这样做时,如果选择的号码不正确,例如号码 > 99 或 <= 0 那么它 "rereads" 用户的 n_terms输入然后 return 执行到主程序,导致程序终止。
结果应该是,当数字选择不正确时,子例程完全是 运行,而不是从主程序转到下一行执行 - 这将是结束程序。
不胜感激!
应该可以使用备用 return,但备用 return 在过时功能列表中。也许,实现您想要做的事情的最简单方法是使用无限 DO
循环,该循环在有效输入时退出。
Program FibSequence
Integer(2) :: n_terms ! Note, non-portable kind type parameter
print*, "Please Enter number 0-99"
do
read*,n_terms
if (n_terms > -1 .and. n_terms < 100) exit
end do
! Do something with n_terms.
End Program
抱歉这个菜鸟问题,但我需要一些帮助来弄清楚如何在逻辑块完成检查用户输入后return执行回到子例程的开始。
Program FibSequence
Integer(2) :: n_terms
print*, "Please Enter number 0-99"
read*,n_terms
call check_term()
End Program
Subroutine check_term()
if n_terms <= 0 then
!print stuff
read*, n_terms
return
else if n_terms > 99 then
!print stuff
read*, n_terms
return
else
print*, "you have chosen " , n_terms
end
程序执行成功,但没有做它应该做的事情。
我怀疑程序会进入检查,然后当它这样做时,如果选择的号码不正确,例如号码 > 99 或 <= 0 那么它 "rereads" 用户的 n_terms输入然后 return 执行到主程序,导致程序终止。
结果应该是,当数字选择不正确时,子例程完全是 运行,而不是从主程序转到下一行执行 - 这将是结束程序。
不胜感激!
应该可以使用备用 return,但备用 return 在过时功能列表中。也许,实现您想要做的事情的最简单方法是使用无限 DO
循环,该循环在有效输入时退出。
Program FibSequence
Integer(2) :: n_terms ! Note, non-portable kind type parameter
print*, "Please Enter number 0-99"
do
read*,n_terms
if (n_terms > -1 .and. n_terms < 100) exit
end do
! Do something with n_terms.
End Program