我有一个文本文件,格式如下(11列8行)
Name Chris Kyle Peter Luke Sally (...)
age xxxx xxxx xxxx xxxx xxxx
height xxxx xxxx xxxx xxxx
weight xxxx xxxx xxxx xxxx
class xxxx xxxx xxxx xxxx
第一列(chris)只有第一行的数据。
我需要构建一个程序来阅读这个表,这是我到目前为止所得到的,但我无法让它工作......
program readtable
implicit none
integer :: i, j, num_col, num_row
double precision, dimension (2) :: a
character(14), dimension (1) :: variable
num_col = 11
num_row = 8
open(100,file='SSL.dat',status='old')
do j=1, num_row
read(100,*) variable(j), (a(i,j), i=1,num_col)
print*, variable(j), a(i,j)
end do
end program
当我运行这段代码时,我得到排名不匹配。
我想读取此表中的数据,以便我可以将数据分配给特定变量。例如,如果我想和凯尔和彼得做一些事情,我知道对于凯尔来说(:,2)和对彼得来说(:,3)
这是我用gfortran编译为Fortran 90代码时得到的错误
read(100,*) variable(j), (a(i,j),i=1,num_col))
1
Error: Rank mismatch in array reference at (1) (2/1)
答案 0 :(得分:1)
看起来您假设toolbox: {
show: true,
feature: {
downloadTable: {
show: true,
// Show the title when mouse focus
title: 'Save As picture',
// Icon path
icon: '/static/img/download-icon.png',
option: {}
}
}
}
使数组dimension(n)
- 维度。那不是真的!它使数组成为一维的,形状从1到n
,即n
。
如果要声明一个包含8行和11列的二维数组,则必须执行以下操作:
(1:n)
或等效
double precision, dimension(8,11) :: a
同样,double precision :: a(8,11)
必须类似于:
variable
这不会使您的程序完整且功能正常,但会解决编译器抱怨的直接问题。请保持您的问题范围缩小。