Java初心者です。現在格子状に値を配置してそれぞれの値を増加させるというプログラムをかなり雑になってしまいましたがこのプログラム自身は書きました。しかし、あまり見た目がよくありません。
なのでメソッドを使いもう少し整理したいのですがメソッドの使い方に不慣れでうまくまとめることができませんでした。そもそもこれ以上まとめることができるのか。意見をいただけると幸いです。
Java
1class STAR23 { 2 public static void main(String args[]){ 3 final int REGION_SIZE = 20; 4 5 int n,i,j; 6 int n_in_region[][] = new int[REGION_SIZE][REGION_SIZE]; 7 8 for( i = 0; i < REGION_SIZE; i++ ) { 9 for( j = 0; j < REGION_SIZE; j++ ) { 10 n_in_region[i][j] = 0; 11 } 12 } 13 14 for( n = 0; n < 1000; n++ ){ 15 for( i = 0; i < REGION_SIZE; i++ ) { 16 for( j = 0; j < REGION_SIZE; j++ ) { 17 n_in_region[i][j] = one_percent_increase(n_in_region[i][j]); 18 if( i > 0 ) { 19 n_in_region[i][j] += 20 one_percent_increase(n_in_region[i-1][j]) 21 - n_in_region[i-1][j]; 22 } 23 if( i < REGION_SIZE-1 ) { 24 n_in_region[i][j] += 25 one_percent_increase(n_in_region[i+1][j]) 26 - n_in_region[i+1][j]; 27 } 28 } 29 } 30 System.out.print("day " + n + ":\n"); 31 for( i = 0; i < REGION_SIZE; i++ ) { 32 for( j = 0; j < REGION_SIZE; j++ ) { 33 System.out.printf("%3d ",n_in_region[i][j]); 34 } 35 System.out.print("\n"); 36 } 37 } 38 39 return; 40 } 41 42 static int one_percent_increase(int num) { 43 int r; 44 45 r = num; 46 r *= 1.01; 47 if( r < 100 && (int)(Math.random() * 100) < 1 ) { 48 r += 1; 49 } 50 return r; 51 } 52 }
まずコードをコードブロック(```)で囲んでください。
すみません。質問に不慣れなもので。ご指摘ありがとうございます
質問文は編集できますんで、ソースコードは<code>ボタンを押して、’’’の枠の中に貼り付けましょう
できてないです。「`」3つをコードの前後に入れてください。あるいはヘルプ参照してください。
すみません。ちょっとお待ちください。
こういった形でよろしいでしょうか
大丈夫です。ありがとうございます。
「上手く実行できませんでした」とありますが、質問は「理想の動作をしない原因を知りたい」のか「コードをすっきりさせたい」のかどちらでしょう?
プログラミング関係なしに、どういったことを行っているかメタいレベルでのコメントを入れましょう。回答者(レビュアー)に対して、「何をやっているかはコードから読み解いて下さい」という姿勢はちょっとどうかと。
例えば、「// 二次元配列を0で初期化します」など(ここは見れば一目瞭然ではありますが)。また、そうすることで質問者さん自身も見えてくるものがあるかと。(反論、ご指摘があれば歓迎!!)
ああ、すみません。
コードをすっきりさせたいの方です。
ppnさん、dice142さん、y_waiwaiさんいろいろとご指導いただきありがとうございます。あらためてお礼申し上げます。
one_percent_increase内のrがdoubleになるとかじゃないとコンパイルエラーでは?
回答4件
あなたの回答
tips
プレビュー