2011-05-30

普物測驗軟體 原始碼–2 將實際題目進行排列


class RExps extends test{
   
    public int a[];
    public int b[];
    public String c[];
    public int d[];
    public int remainExp;
    public String EQC[][][][];
    public String EQC2[][][][];
    
    /* 建立實驗隨機排序方法 */
    public String[] RE1(int m){
       
        String[] ExpsName=new String[]{"RCRL",  "電流天平", "基礎光學","光電效應","密立根油滴","光譜分析","電子荷質比"};
       
       
        a=new int[m];
        super.StartExp(m); // 呼叫父類別方法
        System.arraycopy(ExpArray, 0, a, 0, m);    //複製陣列
       
        remainExp=m-a[0];
        c=new String[m];
        for(int i=0;i<remainExp;i++){
            c[i]=ExpsName[(int)a[i]];
        }
        for(int i=remainExp;i<m;i++){
            c[i]=ExpsName[(int)a[i]];
        }
        return c;
    }
   
    public String[][][][] RE2(int l, int m, int n){    //建立問題
       
        this.RE1(l);    //類別內函數互相呼叫
//        EQC=new String[7][7][6][4];    //[實驗項目數量][實驗項目數量+1][題數][]
       
        //六題、五欄(1Q+4A)、3位
        String[][][][] EQCori=new String[][][][]{
                {
**************************題目區域*****************************
                }
       
        };
       
        remainExp=l-a[0];
        EQC2=new String[7][7][5][4];
        for(int w=0; w<remainExp; w++){
            for(int x=0; x<7; x++){
                for(int y=0; y<5; y++){
                    for(int z=0; z<4; z++){
                        EQC2[w][x][y][z]=EQCori[(int)a[w]][x][y][z];
                    }
                }
            }
        }
        for(int w=remainExp; w<7; w++){
            for(int x=0; x<7; x++){
                for(int y=0; y<5; y++){
                    for(int z=0; z<4; z++){
                        EQC2[w][x][y][z]=EQCori[(int)a[w]][x][y][z];
                    }
                }
            }
        }
       
        d = new int[m];
        EQC=new String[7][7][5][4];
        super.RandomQues(m, n);    //呼叫父類別產生隨機排序
        System.arraycopy(QueArray, 0, d, 0, m);    //複製陣列
       
        // 問題陣列排除 0 之迴圈
        /* 因父類別中的隨機陣列排序包含 0,但題目的排列中 [][0][][],這一行是實驗項目名稱,而沒有題目,因此利用一個迴圈
             將得到的隨機來排列陣列中的 0 排到最後一個位置。
             ***注意*** 題目被換掉第七行!!!*/
        for(int i=0; i<7;i++){
            if(d[i]==0){
                int dm;
                dm=d[6];
                d[6]=d[i];
                d[i]=dm;
            }
        }
       
        // 隨機排列題目
        for(int w=0; w<7; w++){
            for(int x=0; x<7; x++){
                for(int y=0; y<5; y++){
                    for(int z=0; z<4; z++){
                        EQC[w][x][y][z]=EQC2[w][d[x]][y][z];
                    }
                }
            }
        }
        return EQC;
    }
}

沒有留言: