• ベストアンサー

FORTRANからJava

FORTRAN初心者で理解できずに困っています。。 FORTRANで書かれたプログラムをJavaに変換したいのですが、自分なりにしてみたらエラーエラーエラーでした。 配列が一番間違ってるみたいに思えます。 たとえば、 REAL X(50,50) AX=X(1,MM)-X(1,1) はJavaではどのように書くのですが?? また、参考になりそうなサイトなどあれば教えてください。 どうか、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>GO TO 40の書き方が分かりません。。 javaでは、gotoは、予約語ですが使えません。 でもブロックラベルによって同様のことができます。 例えば Label40: if(){ if(){ break Label40; } } のように外側のIFを脱出できます。 forなどのループでも同様に使えます Label40: for(){ for(){ break Label40; } } の様に外側のループを脱出したり あるいは continue Label40; の様にループの継続(戻り点の指定)もできます。 こうしたラベルを指定しない break; continue; は、一番内側のループに作用します。 結局具体的にどう書くかは、その包括される構造によるのでここでは直接具体的には書けません。 条件のANDは、基本的には && を使います。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>javaの配列は0からとかかいてあったので そうですね。 double x[10]; としたときには、 x[0]~x[9]になります。そのように合わせる必要があります。 このような変換作業でそれが面倒な時には double x[11]; として x[1]~x[10]を使う(x[0]は利用されない)というような方法もあるかと思います。 >forかなぁって そうですね。 for(int i=1;i>=2+N;i++){ : } てな感じになると思います。 初期値や条件はそれぞれ適当に変える必要があるかもしれませんね。(前述)

rariho555
質問者

お礼

ご回答ほんとにありがとうございます!! forを終わらせる位置が間違っていたのが分かりました!! また少しプログラムを進めることができました。

rariho555
質問者

補足

何度も追加質問お許しください。 また、躓いてしまいました。  IF(I.GT.1.AND.I.LT.2+N)THEN IF(J.EQ.1.AND.J.EQ.MM)THEN GO TO 40 ELSE   :    :   ENDIF  ENDIF 40 CONTINUE というのを、Javaで表したいのですが、GO TO 40の書き方が分かりません。。  if(i>1&i<2+N){   if(j=1&j=MM){    ?????????     else{ : : } } &の使い方もあってるのか分からないので教えていただける時はよろしくお願いいたします。   

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

>REAL X(50,50) double X[][]= new double[50][50]; >AX=X(1,MM)-X(1,1) AX=X[1][MM]-X[1][1];

rariho555
質問者

お礼

早速のご回答ありがとうございます!! javaの配列は0からとかかいてあったので AX=X[0][MM]-X[0][0]; ってしてるんですけど、こーいうのは関係ないでしょうか・・? 質問になってしまいますので、追加で質問させていただきます。 また、教えていただける時はよろしくお願いします!! 本当にありがとうございました!!

rariho555
質問者

補足

FORTANで DO 10 I=1,2+N   :   : 10 CONTINUE ってあったりするんですけど、Javaではどう書けばいいのでしょうか? forかなぁって思ったりしてるんですけど、自信がないので教えていただけると助かります。 よろしくお願いします。

関連するQ&A

  • FortranプログラムをJavaに変換するソフトについて教えてくださ

    FortranプログラムをJavaに変換するソフトについて教えてください。 FortranプログラムをJavaに変換するために、f2j-0.8というフォルダをダウンロードしたのですが、 どのようにして使用すれば良いのでしょうか?

  • Fortranについて

    私は今大学生のものです。 今卒業研究でFortranのプログラムを用いています。しかし私はプログラミングには疎く、独学で勉強しようと思うのですがなにか初心者にわかりやすいお勧めの本、サイトなどはあるでしょうか? 本屋に行ってもFortranの本は販売されておらず、通販では手にはいるのですがどの本がいいのかわかりません。是非教えていただければと思いここに書き込ませていただきました。 また、家でもFortranのプログラムをコンパイル、実行できる環境をつくりたいのですがどうすればよろしいでしょうか? 学校ではcygwinをインストールして行っていますが家でもcygwinをインストールすればいいのでしょうか? また今もととなるプログラムはあるのですがこのプログラムはLinux上では正常にコンパイルされないところがあるらしく書き直さなければならないらしいのですがLinux上でのFortranのプログラムは普通のFortranのプログラムとは違うのでしょうか?ちなみに学校のパソコンのOSはWindows Vistaです。 初心者の質問ばかりになってしまってすみません。自分でしっかり学びたいと思うのでぜひ教えてください。

  • fortran90 の簡単なコード

    初めて質問させていただきます。 fortran を使い15を任意の数で割るプログラムを作成しようとしているのですが 実行時に n を read し結果を書き出すとn+1個の数値が書き出されてしまいます。かつ、n+1個目の数が全く予想しない数値になってしまいます… コンパイルエラーは発生しません。 初心者なりにひとつひとつ精査したのですが原因がわかりません。 お助けください、よろしくお願いいたします。 画像:実行時n=10としたときの例 PROGRAM work6 IMPLICIT NONE REAL , ALLOCATABLE :: x(:) REAL :: dx INTEGER :: n PRINT *,' How many numbers do you separate it? ' READ(*,*) n ALLOCATE (x(n)) dx=15.0/REAL(n) do n=1,n x(n)=dx*REAL(n) enddo  PRINT *,x(1:n)  READ (*,*) ENDPROGRAM work6

  • Fortran90/Fortran95→Fortran77

    大学の授業でFortranを使ったプログラミングを勉強しています。 以下の文が大学のPCに入っているコンパイラでは問題なくコンパイルでき実行できるのですが、家のPCだとコンパイルすることが出来ません(以下の文でエラーが出ます) 大学のPCの開発環境はFujitsu-FORTRANだと思います(^ ^; 家のPCはSalford FTN77 Personal Edition CompilerとCPad for Salford FTN77を組み合わせて使用しています なぜエラーがでるのか自分なりに考えた結果、Fortran90/Fortran95のプログラムをFortran77のコンパイラでコンパイルしているからだと思います(全くの勘違いだったら指摘して下さい) Fortran90/Fortran95の開発環境がフリーで整えばいいのですが、見つからないのでプログラムを修正したいと思います そこで、力を貸していただきたいのです 前置きが長くなりましたが、エラーが出る文は以下のところです open(8,file='freq_ex13.dat',action='write',status='replace') ここを、Fortran77のコンパイラでコンパイルできるようにアドバイスを下さい よろしくお願いします

  • fortranの配列のreadについて

    fortran初心者です。 研究のデータ整理を行う際に 240*21のテキストデータを読み込む必要があるのですが、 自分なりに勉強してみたのですが、fortranの計算がずっとカーソルが点滅しており いつまで経っても終わらない状態のため、 ファイルopenまではいくのですが、その中身を読み込めてないようです。 プログラムですが自分としては次のように考えました。 REAL temp DIMENSION temp(21,240) DATA temp/5040*0.00/    open(11,status='unknown',file=filename)    read *,((temp(q,p),p=1,240),q=1,21)    close(11) と配列を組んで考えてみたのですが…ダメでした。 おかしなところがありましたら教えてください。 よろしくお願いします。 対象のテキストデータです。 0 32.57 32.48 32.48 32.57 32.66 32.75 32.75 32.75 33.01 33.10 32.93 32.48 32.21 32.21 32.30 32.21 32.21 32.12 32.12 32.21 1 32.57 32.57 32.48 32.48 32.57 32.66 32.66 32.75 32.93 33.01 32.84 32.39 32.21 32.21 32.21 32.21 32.12 32.12 32.21 32.21 2 32.66 32.66 32.66 32.66 32.75 32.84 32.84 32.84 32.93 33.10 32.93 32.48 32.21 32.21 32.12 32.12 32.12 32.12 32.12 32.21 … 239 37.53 37.28 36.76 36.16 35.64 35.21 34.86 34.51 34.16 33.90 33.54 33.37 33.28 33.10 32.93 32.75 32.57 32.39 32.30 32.21 よろしくお願いします。

  • Javaは全く扱ったことがないのですが、Javaのコードを読んでいて意

    Javaは全く扱ったことがないのですが、Javaのコードを読んでいて意味の理解できないところがあったので質問させてください。 次のような宣言を行った場合、配列Xの内容はどうなるのでしょうか? 4つめの0x78だけはbyte型への型変換が行われていないようなのですが・・・。 final byte[] X = { (byte)0x12, (byte)0x34, (byte)0x56, 0x78}; よろしくおねがいします。

    • ベストアンサー
    • Java
  • fortran 配列

    はじめまして。fortranを勉強しているのですが割付け配列がよく理解できないので教えていただきたいのですが。以下に自分で作った簡単なプログラムを実行していたのですが正しい値になりません。どこが間違っているのでしょうか?教えて下さい。よろしくお願いします。 program list2_3 implicit none real(8), allocatable :: u(:), v(:) integer :: i, n = 2 real(8) dotp allocate (u(n), v(n)) u(1:2) = (/1.2d0,3.4d0/) v(1:2) = (/4.1d0,2.6d0/) dotp = 0.0d0 do i = 1, n dotp = dotp + u(n) * v(n) enddo deallocate (u, v) write(*,*) ' dot product =' , dotp end program list2_3

  • FORTRANの課題

    FORTRANの課題が出たのですが、初心者なのでやり方がわからなかったため質問をさせていただきました。 内容:掃き出し法で、A*X=B のXを求めるプログラムを作れ。 できれば詳しい解説もお願いいたします。

  • fortranでx=1としても0.9..が入る

    fortranで以下のようなプログラムにてxに1.0^-6を代入し、 その中身を表示しました。 --------------------------------- program test real(8) :: x = 1.0d-6 write(*,*) x write(*,*) x * 1.0d6 write(*,*) int(x * 1.0d6) end program test --------------------------------- しかし、結果は以下のようになり、 0.999999999999999955^-6となってしまいます。 さらに、やっかいなことに10^6倍して 整数型に変換しても0と認識されてしまうのです。 ---------------------------------- $ ./a.exe 9.99999999999999955E-007 1.00000000000000000 0 ---------------------------------- 変数の型も倍精度で宣言し、定数も倍精度(d付き)で 代入しているはずなのですが、なぜこのような現象が 起きるのでしょうか。 ご存知の方いましたら教えて頂けると助かります。 なお、コンパイルはgfortranで行っています。

  • Fortran入門に関する書籍を学ぶ必要があります

    プログラム初心者ですが、仕事でFortranを学ぶ必要があります。書籍を1冊手元に置いておきたいのですが、下記のうちオススメはどちらでしょう?安くはないものなので、失敗しないようにしたいのです。それ以外の推薦書もお教えください。いくつかのサンプルコードは見たことがありますが、内容はほとんど理解できていません。  ・Fortran90入門(森北出版)  ・Fortran90プログラミング(培風館) 一応、サイトで参考に以下を閲覧しています。  ・http://www.uopmu.ees.osakafu-u.ac.jp/~yabu/soft/fortran.html  ・http://www.math.sci.hiroshima-u.ac.jp/~daishin/keisanA/1998/fortran.html  ・http://svr01.damp.tottori-u.ac.jp/~akimoto/Fortran/Fortran.html