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 }