配列productを読み取り、商品の売上が多い順にソートするプログラムを作成しております。
実行結果は、売上た個数 売上た商品名、とします。
このプログラムだと、実行結果が
3 bread
3 butter
3 onion
2 carrot
2 potato
2 rice
2 tea
1 water
となる予定です。
しかし、実行結果がうまくいきません。以下、ソースコードです。
java
1class Count{ 2 int i, j, k, length; 3 boolean hantei = false; 4 String p_name_data[] = new String[100]; 5 int p_num_data[] = new int[100]; 6 String add_name_data[] = new String[1]; 7 int add_num_data[] = new int[1]; 8 9 void count(String[][] product){ 10 for(i=0; i<100;i++){ 11 p_name_data[i] = ""; 12 p_num_data[i] = 0; 13 } 14 add_name_data[0] = ""; 15 add_num_data[0] = 1; 16 length = 1; 17 18 for(i = 0; i < product.length; i++){ 19 for(j = 0; j < product[i].length; j++){ 20 hantei = false; 21 for(k = 0; k < length; k++){ 22 if(p_name_data[k] == product[i][j]){ 23 p_num_data[k]++; 24 hantei = true; 25 continue; 26 } 27 else hantei = false; 28 } 29 if(hantei == false){ 30 add_name_data[0] = product[i][j]; 31 System.arraycopy(add_name_data, 0, p_name_data, length-1, 1); 32 System.arraycopy(add_num_data, 0, p_num_data, length-1, 1); 33 length++; 34 } 35 else{} 36 } 37 } 38 } 39 40 int num; 41 String name; 42 void sort(){ 43 int new_num_data[] = new int[length]; 44 String new_name_data[] = new String[length]; 45 for(i = p_num_data.length-1; i > 0; i--){ 46 for(j=0; j<i; j++){ 47 if(p_num_data[j] < p_num_data[j+1]){ 48 num = p_num_data[j]; 49 name = p_name_data[j]; 50 51 p_num_data[j] = p_num_data[j+1]; 52 p_name_data[j] = p_name_data[j+1]; 53 54 p_num_data[j+1] = num; 55 p_name_data[j+1] = name; 56 } 57 } 58 } 59 for(i=0; i<length; i++){ 60 new_num_data[i] = p_num_data[i]; 61 new_name_data[i] = p_name_data[i]; 62 } 63 for(i=0; i<length; i++){ 64 System.out.println(new_num_data[i]+" "+new_name_data[i]); 65 } 66 } 67} 68 69class Ex1{ 70 public static void main(String[] args){ 71 String[][] product = { 72 {"tea", "butter", "bread"}, 73 {"butter", "bread"}, 74 {"onion", "carrot", "potato"}, 75 {"rice", "onion"}, 76 {"bread", "tea", "butter"}, 77 {"water", "onion", "carrot", "potato", "rice"} 78 }; 79 80 Count A1 = new Count(); 81 A1.count(product); 82 A1.sort(); 83 } 84}