正答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
package challenge09; import java.util.Scanner; public class Factory { //部品の配列 (A部品0番目、B部品1番目、C部品2番目) static int[] parts_su = new int[3]; //部品数 static int[] kousei = {5,2,7}; //製品の部品構成数 static String[] parts_name = {"A","B","C"}; //部品名 public static void main(String[] args) { //納入 nouhin(); //製造 int seizou_su = seizou(); //生産数等の表示 print(seizou_su); } /* 納品処理 */ public static void nouhin(){ String message = "部品の納品数を入力してください"; for(var i = 0;i < kousei.length;i = i + 1){ input(parts_name[i]+message,i); } } /* 納品入力 */ public static void input(String message,int idx){ Scanner scan = new Scanner(System.in); System.out.println(message); parts_su[idx] = scan.nextInt(); } /* 製造 【戻り値】製造数 */ public static int seizou(){ var max = max_seizou(); //製造できる最大の製品数を求める for(var i = 0;i < parts_su.length;i = i + 1){ //製造数を基に部品数を減らす parts_su[i] = parts_su[i] - max * kousei[i]; } return max; } /* 製造できる最大数を求める 【戻り値】最大製造数 */ public static int max_seizou(){ int[] min = new int[parts_su.length]; //部品毎に製造できる最大数を求める for(var i = 0;i < parts_su.length;i = i + 1){ min[i] = parts_su[i] / kousei[i];//部品数から製品構成数を除算して最大数を求める } int min_s = 9999999; //部品毎の最小数製造数が製造できる製品の最大数になる for(var i = 0;i < min.length;i = i + 1){ if( min[i] < min_s){ min_s = min[i]; } } return min_s; } /* 表示処理 【引数】製造数 */ public static void print(int seizou_su){ System.out.println("製造数="+seizou_su); for(var i = 0;i < parts_su.length;i = i + 1){ System.out.println(parts_name[i] + "部品残り:"+parts_su[i]); } } } |