ボトル品質問題のJavaコード実装


同じ瓶が12本あり、そのうちの1本の重さは他の瓶とは違います. 
1つの天秤で、3回量って、その瓶を区別して、他の瓶より重いのか軽いのかを説明します. 
+++++++++++++++++++++++++++++++
まず瓶番号1、2、3、4、5、6、7、8、9、10、11、12の計12本~~~~~~
一秤:
(1、2、3、4)Vs.(5、6、7、8)
×××××××××××
×××××××××××
一秤平は1、2、3、4、5、6、7、8本が正常であることを示しています...すなわち、問題瓶は9、10、11、12にある.
二秤:
(1、9)Vs.(10、11)
二秤平これは9、10、11本が正常であることを示しています...
三秤:(1)Vs.(12)12軽または重を得る
二秤の不平は問題瓶が9、10、11にあることを説明します...
三秤:
(10)Vs.(11)
平則は9本の重さを判断できる
不平であり、天秤の傾斜方向と二秤の方向比は変わらない.11は問題瓶兵で、軽重を判断することができます.の不平であり、天秤の傾斜方向と二秤の方向比が変化する.10は問題瓶兵が軽重を判断できる.
×××××××××××
×××××××××××
秤が平らでないと、問題瓶が1、2、3、4、5、6、7、8の中にあることを示します.
二秤:
(1、6、9)Vs.(5、2、3)
二秤平は問題瓶が4、7、8の中にあることを説明します...
三秤:
(7)Vs.(8)
三秤平は4本の重さを判断できる
平らではなく、天秤の傾斜方向が秤の方向に比べて変わらない.7は問題瓶兵で、軽重を判断することができます.の平らで天秤の傾斜方向が秤の方向に比べて変化する.問題の瓶兵は軽重を判断することができる.
二秤は平らではなく、天秤の傾斜方向と二秤の方向比は変わらない.問題瓶は1、5にあることを示します.
三秤:
(1)Vs.(9)
三秤は平ければ5本の重さを判断でき、三秤は平ければ1の重さを判断できる.
二秤は平らではなく、天秤の傾斜方向と二秤の方向比が変化する.問題瓶は2、3、6にあることを示します.
三秤:
(2)Vs.(3)
三秤平は6本の軽重を判断することができ、三秤が平らで傾斜方向が二秤方向に比べて変わらないことは3本が問題瓶であり軽重を判断することができ、三秤が平らで傾斜方向が二秤方向に比べて変化することは2本が問題瓶であり軽重を判断することができることを説明する.
class Pingzi{
    private int weight;
    private boolean flag;//    
    public Pingzi(){
        this.weight=100;
        this.flag=true;
    }
    public int getWeight(){return this.weight;}
    public boolean getFlag(){return this.flag;}
    public void setWeight(int w){this.weight=w;}
    public void setFlag(boolean f){this.flag=f;}

}
public class PingziTest{
    public static void main(String[] args){
        int badFlag;
        Pingzi [] pingzi=new Pingzi[12];
        Pingzi total_pingzi_1=new Pingzi();
        Pingzi total_pingzi_2=new Pingzi();
        for(int i=0;i<12;i++){
            pingzi[i]=new Pingzi();
        }
        badFlag=(int)(12*Math.random()); 
        pingzi[badFlag].setWeight((int)(200*Math.random()));
        System.out.println("        :");
        for(int i=0;i<12;i++){
            System.out.print(pingzi[i].getWeight()+"  ");
        }
        System.out.println();
        total_pingzi_1.setWeight(pingzi[0].getWeight()+pingzi[1].getWeight()+pingzi[2].getWeight()+pingzi[3].getWeight());
        total_pingzi_2.setWeight(pingzi[4].getWeight()+pingzi[5].getWeight()+pingzi[6].getWeight()+pingzi[7].getWeight());
        if(total_pingzi_1.getWeight()==total_pingzi_2.getWeight()){ 
            Pingzi total_pingzi_1_1=new Pingzi();
            Pingzi total_pingzi_1_2=new Pingzi();
            total_pingzi_1_1.setWeight(pingzi[0].getWeight()+pingzi[8].getWeight());
            total_pingzi_1_2.setWeight(pingzi[9].getWeight()+pingzi[10].getWeight());
            if (total_pingzi_1_1.getWeight()==total_pingzi_1_2.getWeight()) {  
                pingzi[11].setFlag(false);
            }
            else if(total_pingzi_1_1.getWeight()>total_pingzi_1_2.getWeight()){  
                if(pingzi[9].getWeight()==pingzi[10].getWeight()){
                    pingzi[8].setFlag(false);
                }else if (pingzi[9].getWeight()>pingzi[10].getWeight()) {
                    pingzi[10].setFlag(false);
                }else if (pingzi[9].getWeight()<pingzi[10].getWeight()) {
                    pingzi[9].setFlag(false);
                }
            }else if(total_pingzi_1_1.getWeight()<total_pingzi_1_2.getWeight()){  
                if (pingzi[9].getWeight()==pingzi[10].getWeight()) {
                    pingzi[8].setFlag(false);
                }else if (pingzi[9].getWeight()>pingzi[10].getWeight()) {
                    pingzi[9].setFlag(false);
                }else if (pingzi[9].getWeight()<pingzi[10].getWeight()) {
                    pingzi[10].setFlag(false);
                }
            }
        }
        else if(total_pingzi_1.getWeight()>total_pingzi_2.getWeight()){  
            Pingzi total_pingzi_2_1=new Pingzi();
            Pingzi total_pingzi_2_2=new Pingzi();
            total_pingzi_2_1.setWeight(pingzi[0].getWeight()+pingzi[5].getWeight()+pingzi[8].getWeight());
            total_pingzi_2_2.setWeight(pingzi[4].getWeight()+pingzi[1].getWeight()+pingzi[2].getWeight());
            if(total_pingzi_2_1.getWeight()==total_pingzi_2_2.getWeight()){   
                if (pingzi[6].getWeight()==pingzi[7].getWeight()) {
                    pingzi[3].setFlag(false);
                }else if (pingzi[6].getWeight()>pingzi[7].getWeight()) {
                    pingzi[7].setFlag(false);
                }else if (pingzi[6].getWeight()<pingzi[7].getWeight()) {
                    pingzi[6].setFlag(false);
                }
            }else if(total_pingzi_2_1.getWeight()>total_pingzi_2_2.getWeight()){  
                if (pingzi[0].getWeight()==pingzi[8].getWeight()) {
                    pingzi[4].setFlag(false);
                }else{
                    pingzi[0].setFlag(false);
                }
            }else if(total_pingzi_2_1.getWeight()<total_pingzi_2_2.getWeight()){
                if (pingzi[1].getWeight()==pingzi[2].getWeight()) {
                    pingzi[5].setFlag(false);
                }else if (pingzi[1].getWeight()>pingzi[2].getWeight()) {
                    pingzi[1].setFlag(false);
                }else if (pingzi[1].getWeight()<pingzi[2].getWeight()) {
                    pingzi[2].setFlag(false);
                }
            }
        }
        else if(total_pingzi_1.getWeight()<total_pingzi_2.getWeight()){   
            Pingzi total_pingzi_2_1=new Pingzi();
            Pingzi total_pingzi_2_2=new Pingzi();
            total_pingzi_2_1.setWeight(pingzi[0].getWeight()+pingzi[5].getWeight()+pingzi[8].getWeight());
            total_pingzi_2_2.setWeight(pingzi[4].getWeight()+pingzi[1].getWeight()+pingzi[2].getWeight());
            if(total_pingzi_2_1.getWeight()==total_pingzi_2_2.getWeight()){
                if (pingzi[6].getWeight()==pingzi[7].getWeight()) {
                    pingzi[3].setFlag(false);
                }else if (pingzi[6].getWeight()>pingzi[7].getWeight()) {
                    pingzi[6].setFlag(false);
                }else if (pingzi[6].getWeight()<pingzi[7].getWeight()) {
                    pingzi[7].setFlag(false);
                }
            }else if(total_pingzi_2_1.getWeight()<total_pingzi_2_2.getWeight()){ 
                if (pingzi[0].getWeight()==pingzi[8].getWeight()) {
                    pingzi[4].setFlag(false);
                }else{
                    pingzi[0].setFlag(false);
                }
            }else if(total_pingzi_2_1.getWeight()>total_pingzi_2_2.getWeight()){
                if (pingzi[1].getWeight()==pingzi[2].getWeight()) {
                    pingzi[5].setFlag(false);
                }else if (pingzi[1].getWeight()<pingzi[2].getWeight()) {
                    pingzi[1].setFlag(false);
                }else if (pingzi[1].getWeight()>pingzi[2].getWeight()) {
                    pingzi[2].setFlag(false);
                }
            }
        }
        for (int i=0;i<12 ;i++ ) {
            if (pingzi[i].getFlag()==false) {
                System.out.println("    "+(i+1)+" "+"       :"+pingzi[i].getWeight());
            }
        }
    }
}