/** * Java认证 * * 一道微软面试题 * * 问题:你有4瓶药。每粒药丸的重量是固定的,不过其中有一瓶药受到了污染, * 药丸的重量发生了变化,每个药丸增加了一点重量。 * 你怎样一下子测出哪瓶药是遭到污染的呢? */ public class GetMedicine { public static void main(String[] args) { /* * 设定四瓶药的重量分别为12,17,12,12 * 其中重量为17的那瓶药是受到污染的 */ int[] T={12,17,12,12}; getTrue(T); } public static void getTrue(int[] T) { int flag=0;//定义找到受污染药品的标志,0表示没有找到,1表示找到 /* * 定义三个整形变量i,j,k表示四瓶药的瓶号 * 注意:在这个地方i,j,k的数值是可以相同的,在下面会强制不等 */ for(int i=0;i<T.length;i++) { if(flag==0) { for(int j=0;j<T.length;j++) { if(flag==0) { for(int k=0;k<T.length;k++) { if(flag==0) { /* * 开始查找没有受到污染的药 */ if(i!=j&&j!=k&&i!=k) {//强制使i,j,k不相等,来表示四瓶药中不同瓶号的3瓶药 if(T[i]==T[j]&&T[j]==T[k]) {//判断这三瓶药的重量是否同时相等,相等则找到,不相等这继续程序 System.out.println("第"+(i+1)+"、"+(j+1)+"、"+(k+1)+"瓶药是没有受到污染的药品"); flag=1; break; }else { System.out.println("继续查找..."); } } }else { break; } } }else { break; } } }else { break; } } } }