int型の2次元配列に入っている数字の発生頻度が知りたい
ここに質問の内容を詳しく書いてください。
int型の2次元配列に入っている数字の発生頻度についてウェブサイトで調べてみてもよくわからないし、お手上げ状態です。わかりやすく教えていただけないでしょうか。こうすればよいなどのヒントが欲しいです。
発生している問題・エラーメッセージ
個数の位置がずれたり,0の頻度などすべてが反映されていない。
該当のソースコード
java
1/* 2課題053 3int型の2次元配列aには,0~4の整数値が格納されている. 4各整数値の頻度をint型の配列frequencyに格納せよ. 5先頭から,0の頻度,1の頻度,…,4の頻度とすること. 6 */ 7public class Kadai053 { 8 9 public static void printArray(int[] array) { 10 for(int i=0; i<array.length; i++) 11 System.out.printf("%d : %s\n", i, array[i]); 12 System.out.println(); 13 return; 14 } 15 16 public static void main(String[] args) { 17 int[][] a = {{2, 1, 1, 0, 2, 2, 3, 0}, 18 {1, 3, 0, 2, 3, 4, 3, 1}, 19 {4, 1, 3, 3, 3, 4, 0, 3}, 20 {0, 4, 4, 4, 2, 0, 4, 3}, 21 {3, 4, 1, 2, 0, 4, 4, 4}, 22 {3, 1, 1, 1, 0, 0, 3, 3}, 23 {3, 1, 4, 1, 4, 1, 4, 1}, 24 {3, 3, 4, 2, 2, 1, 4, 3}}; 25 26 int[] b=new int[5] ; 27 int d=0; 28 int e=0; 29 int s=0; 30 int h=0; 31 32 for(int i=0;i<a.length*b.length;i++) {//40 33 34 if(i%8==0) { 35 s++; 36 e++; 37 h=0; 38 } 39 h=s-1; 40 if(i>=8) { 41 i=i-8*s; 42 } 43 if(s>b.length) { 44 break; 45 } 46 h++; 47 for(int j=0;j<8;j++) { 48 System.out.println((e-1)+"\t"+j); 49 if(a[s-1][j]==(0)) { 50 d+=1; 51 b[s-1]=d/8; 52 } 53 //if(a[h-1][j]==e-1) { 54 //d+=1; 55 //b[s-1]=d; 56 //} 57 } 58 if(s>b.length) { 59 break; 60 } 61 62 } 63 64 int[] frequency=new int[b.length] ; 65 66 for(int i=0;i<frequency.length;i++) { 67 frequency[i]=b[i]; 68 } 69 70 printArray(frequency); 71 72 } 73 74}
試したこと
for文2個で納めれるようにして、出力できるようにした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。