我收到一个运行时错误"bad integer for item 11 in list input"引用下面一行代码。
read(2,*)a,b,c,d,e,f,g,h,theta1,phi1,k,l,m,n,o,
$ p,theta2,phi2,s,theta3,phi3,
$ r1,x1,y1,r2,x2,y2,r3,x3,y3,z1,z2,z3
它读取的行是
1 255.11211 0.2876 165.11404 90 4 8 0.19173 90 165.11404 0.09587 90 345.11404 4 4 0.0764 89.99915 -64.51149 0.11131 90.0015 24.23892 470.10565 -454.32263 120.7902 264.91144 114.00389 -239.12589 322.2894 293.87778 132.3114 0.01236 0.00697 0.00006 0.42619 -0.19278
是整数和实数的混合,但我认为这是可以的,因为我使用了*格式描述符而不是指定的格式。
清单中的第11项是0.09587
,一个真实的。你正在使用列表定向输入,对于一个实数来说,它被F
编辑描述符解释为一个数值(Fortran 2008 Cl. 10.10.3第4段)。与F
编辑描述符对应的输入列表项必须是实数或复数(Fortran 2008 Cl. 10.7.2.3.1第1段)。
要解决这个问题,您需要将k定义为实变量。您在注释中注意到您正在使用隐式类型(其中以i-n开头的变量是整数类型,其余变量默认为实类型)。要显式声明k为实数,使用:
real :: k
最佳实践是禁用隐式类型(implicit none
)并显式地键入所有变量。