Java实现十二个小球称重问题

      之前写过一篇关于小球称重的博客,这里不再赘述小球称重问题的逻辑分析过程,直接上代码。

View Code
  1 import java.util.Random;
  2 
  3 /**
  4  * java实现十二个小球称重问题
  5  * @author tschengbin
  6  *
  7  */
  8 public class CompareBallWeight {
  9     
 10     public static void main(String[] args){
 11         int A1, A2, A3, A4, B1, B2, B3, B4, C1, C2, C3, C4;//定义12个int变量,代表12个小球的重量
 12         A1 = A2 = A3 = A4 = B1 = B2 = B3 = B4 = C1 = C2 = C3 = C4 = 0;
 13         
 14         Random random = new Random();//实例化一个随机数生成器
 15         
 16         int n = random.nextInt(12);//生成一个随机数,用来随机觉得哪个小球的重量不同与其他小球
 17         
 18         //生成两个随机数(此处随机数不能太大,以免后面多个数相加造成溢出),确保生成的两个随机数不一样,作为小球的重量数值
 19         int x = random.nextInt(2);
 20         int y = random.nextInt(2);
 21         while(y == x){
 22             y = random.nextInt(2);
 23         }
 24         
 25         //根据生成的随机数n,确定重量不同的小球,并将随机数x赋值给重量不同的小球,随机数y赋值给其余的小球
 26         switch(n){
 27             case 0 : A1 = x;
 28                      A2 = A3 = A4 = B1 = B2 = B3 = B4 = C1 = C2 = C3 = C4 = y;
 29             break;
 30             case 1 : A2 = x;
 31                       A1 = A3 = A4 = B1 = B2 = B3 = B4 = C1 = C2 = C3 = C4 = y;
 32             break;
 33             case 2 : A3 = x;
 34                       A1 = A2 = A4 = B1 = B2 = B3 = B4 = C1 = C2 = C3 = C4 = y;
 35             break;
 36             case 3 : A4 = x;
 37                       A1 = A2 = A3 = B1 = B2 = B3 = B4 = C1 = C2 = C3 = C4 = y;
 38             break;
 39             case 4 : B1 = x;
 40                       A1 = A2 = A3 = A4 = B2 = B3 = B4 = C1 = C2 = C3 = C4 = y;
 41             break;
 42             case 5 : B2 = x;
 43                       A1 = A2 = A3 = A4 = B1 = B3 = B4 = C1 = C2 = C3 = C4 = y;
 44             break;
 45             case 6 : B3 = x;
 46                       A1 = A2 = A3 = A4 = B1 = B2 = B4 = C1 = C2 = C3 = C4 = y;
 47             break;
 48             case 7 : B4 = x;
 49                       A1 = A2 = A3 = A4 = B1 = B2 = B3 = C1 = C2 = C3 = C4 = y;
 50             break;
 51             case 8 : C1 = x;
 52                       A1 = A2 = A3 = A4 = B1 = B2 = B3 = B4 = C2 = C3 = C4 = y;
 53             break;
 54             case 9 : C2 = x;
 55                       A1 = A2 = A3 = A4 = B1 = B2 = B3 = B4 = C1 = C3 = C4 = y;
 56             break;
 57             case 10 : C3 = x;
 58                       A1 = A2 = A3 = A4 = B1 = B2 = B3 = B4 = C1 = C2 = C4 = y;
 59             break;
 60             case 11 : C4 = x;
 61                       A1 = A2 = A3 = A4 = B1 = B2 = B3 = B4 = C1 = C2 = C3 = y;
 62             break;
 63             default : break;
 64         }
 65         
 66         System.out.println("A1=" + A1 + "\tA2=" + A2 + "\tA3=" + A3 + "\tA4=" + A4);
 67         System.out.println("B1=" + B1 + "\tB2=" + B2 + "\tB3=" + B3 + "\tB4=" + B4);
 68         System.out.println("C1=" + C1 + "\tC2=" + C2 + "\tC3=" + C3 + "\tC4=" + C4);
 69         
 70         //对小球进行分组
 71         int A = A1 + A2 + A3 + A4;
 72         int B = B1 + B2 + B3 + B4;
 73         
 74         //第一次称重比较
 75         if(A == B){
 76             //第二次称重比较
 77             if(C1 == C2){
 78                 //第三次称重比较
 79                 if(C1 == C3){
 80                     System.out.println("重量不同的小球为:C4。");
 81                 } else {
 82                     System.out.println("重量不同的小球为:C3。");
 83                 }
 84             } else {
 85                 //第三次称重比较
 86                 if(C1 == C3){
 87                     System.out.println("重量不同的小球为:C2。");
 88                 } else {
 89                     System.out.println("重量不同的小球为:C1。");
 90                 }
 91             }
 92         } else if(A < B){//如果重量不同的小球在A组,则重量不同的小球重量轻些;如果在B组则重些
 93             //对小球进行重新分组
 94             int D = A1 + B1 + B2 + B3;
 95             int E = B4 + C1 + C2 + C3;
 96             
 97             //第二次称重比较
 98             if(D == E){
 99                 //第三次称重比较
100                 if(A2 == A3){
101                     System.out.println("重量不同的小球为:A4。");
102                 } else if(A2 < A3){
103                     System.out.println("重量不同的小球为:A2。");
104                 } else {
105                     System.out.println("重量不同的小球为:A3。");
106                 }
107             } else if(D > E){
108                 //第三次称重比较
109                 if(B1 > B2){
110                     System.out.println("重量不同的小球为:B1。");
111                 } else if(B1 < B2){
112                     System.out.println("重量不同的小球为:B2。");
113                 } else {
114                     System.out.println("重量不同的小球为:B3。");
115                 }
116             } else {
117                 //第三次称重比较
118                 if(A1 == A2){
119                     System.out.println("重量不同的小球为:B4。");
120                 } else {
121                     System.out.println("重量不同的小球为:A1。");
122                 }
123             }
124         } else {//如果重量不同的小球在A组,则重量不同的小球重量重些;如果在B组则轻些
125             //对小球进行重新分组
126             int D = A1 + B1 + B2 + B3;
127             int E = B4 + C1 + C2 + C3;
128             
129             //第二次称重比较
130             if(D == E){
131                 //第三次称重比较
132                 if(A2 == A3){
133                     System.out.println("重量不同的小球为:A4。");
134                 } else if(A2 < A3){
135                     System.out.println("重量不同的小球为:A3。");
136                 } else {
137                     System.out.println("重量不同的小球为:A2。");
138                 }
139             } else if(D < E){
140                 //第三次称重比较
141                 if(B1 < B2){
142                     System.out.println("重量不同的小球为:B1。");
143                 } else if(B1 > B2){
144                     System.out.println("重量不同的小球为:B2。");
145                 } else {
146                     System.out.println("重量不同的小球为:B3。");
147                 }
148             } else {
149                 if(A1 == A2){
150                     System.out.println("重量不同的小球为:B4。");
151                 } else {
152                     System.out.println("重量不同的小球为:A1。");
153                 }
154             }
155         }
156     }
157 
158 }

 

posted @ 2013-02-22 23:52  他们叫我兔子  阅读(686)  评论(0编辑  收藏  举报