fortran和Java学"/>
fortran和Java学
~~求助,见编辑4)
我在OSX上用Java创建一个输入文件,当我尝试运行读取输入文件的FORTRAN程序时,我在第一行遇到EOF:
At line 37 of file ../fortran.f (unit = 5, file = 'input2.txt')
Fortran runtime error: End of file
第37行开始的地方:
open (5,file='input2.txt')
read(5,*) INDEX
我读到这可能是OS _1668441已经遇到它的问题,但是不记得我是如何修复它的 . 我在Java代码中使用"\n" .
我也尝试从FORTRAN代码编写一个简单的文件,在TextWrangler中我打开它并看到一些主角(菱形)所以我将其复制到我的Java代码但无济于事 .
此外,如果我在Eclipse中编辑文本并使用FORTRAN程序运行它,它就可以工作 .
请帮助,提前致谢
Edit1)这是input2.txt的Hexdump,我没有看到任何奇怪的东西,但是我的眼睛没有受过训练 .
00000000 31 0a 32 0a 4e 69 74 72 6f 67 65 6e 0a 30 2e 30 |1.2.Nitrogen.0.0|
00000010 09 30 2e 30 09 30 2e 30 09 30 2e 30 09 30 2e 30 |.0.0.0.0.0.0.0.0|
*
00000030 09 0a 48 79 64 72 6f 67 65 6e 0a 30 2e 30 09 30 |..Hydrogen.0.0.0|
00000040 2e 30 09 30 2e 30 09 30 2e 30 09 30 2e 30 09 30 |.0.0.0.0.0.0.0.0|
00000050 2e 30 09 30 2e 30 09 30 2e 30 09 30 2e 30 0a 30 |.0.0.0.0.0.0.0.0|
00000060 20 35 39 34 2e 30 20 20 31 2e 30 0a 30 2e 35 20 | 594.0 1.0.0.5 |
00000070 30 2e 35 20 0a 30 0a 0a |0.5 .0..|
00000078
那些零现在还可以,java代码中的小错误但是FORTRAN仍然应该在计算中给我NaN .
Edit2)测试文件中的十六进制转储:
00000000 20 62 6c 61 68 0a 20 62 6c 61 68 0a 20 62 6c 61 | blah. blah. bla|
00000010 68 0a 0a |h..|
00000013
我之前遇到过这个问题,一个人通过显式设置EOL到^ M(而不是Unix的^ J)成功测试了文件,但是,我不知道如何用java做这个,不应该EOL约定是如果program.f是在同一台机器上编译的呢?
编辑3)好的,似乎文件被写入我的“/ Users / Tricknology /”目录而不是我运行程序的位置 . 但是,这导致了一个问题 .
file='/Users/Tricknology/Desktop/Programming/FORTRAN/input2.txt'
太长了,而且
file='/Users/Tricknology/Desktop/Programming'
&/FORTRAN/input2.txt'
生产环境 :
At line 32 of file ../fortran.f (unit = 4, file = '')
Fortran runtime error: File '/Users/Tricknology/Desktop/Programming /Thermo/OUTPUT2' does not exist
(包括空格)
有人知道如何使这项工作?我认为这是问题的根源 .
编辑4)找到解决方案:
我将读取行更改为
open (4,file=fileplace//"OUTPUT2", action='write')
哪里
CHARACTER(*), PARAMETER :: fileplace =
&"/Users/Tricknology/Desktop/Programming/FORTRAN/"
它的工作原理 . 谢谢大家,我希望这有助于其他人在将来节省大量时间 .
更多推荐
fortran和Java学
发布评论