现在,这模拟了一个三维随机游走,并将其调整为有50个粒子。它没有在系统中运行,所以我只是想知道它有什么问题。有人有任何线索吗?
program RW3D
implicit none
open (1, file = ‘sarathi.txt’)
integer, parameter : : n = 50
integer : : x(50), y(50), z(50)
integer : : i, j
real : : P
x = 0
y = 0
z = 0
do i = 1, 100
do j = 1, 50
call random_number (p)
write (1,*) i, x, y, z
if (p .lt. 1.0/6) then
x(j) = x(j) - 1
else if (p .lt. 2.0/6) then
y(j) = y(j) - 1
else if (p .lt. 3.0/6) then
z(j) = z(j) - 1
else if (p .lt. 4.0/6) then
x(j) = x(j) + 1
else if (p .lt. 5.0/6) then
y(j) = y(j) + 1
else
z(j) = z(j) + 1
end if
end do
end program RW3D
答案 0 :(得分:2)
“这是我的代码,它不起作用,请修复它”在这里看起来并不是很好,正如你可以从你的分数中看到的。
“它没有运行”非常模糊。更好的描述是:
“无法编译并显示错误消息:
RW3D.f90:7.12:
integer, parameter : : n = 50
1
Error: Invalid character in name at (1)
我做错了什么?“
您的代码有很多问题:
声明块(所有open (1, file = ‘sarathi.txt’)
和integer
声明)之前的可执行语句(real
)已完成。
文件名未使用正确的'
或"
打开 - 可能您的文本编辑器已将更好看的单引号替换为不行。
两个冒号之间不应有空格。
每个do循环都需要自己的end do
请不要使用小于10的文件i / o单元号。这就是要求麻烦。更好的是,使用newunit
关键字:
以下是newunit
program hello
implicit none
integer :: my_unit
open(newunit=my_unit, file='delme.txt', action='write')
write(my_unit, *) "Hello World"
close(my_unit)
end program hello
试试这些,你应该更进一步。
答案 1 :(得分:1)
OPEN
语句不能在声明之前。在最后一次声明后移动它。
还要注意: :
,它应该是::
正如评论中所述,缺少end do
。