首頁 > 軟體

Java如何將二維陣列轉化為一維陣列

2022-08-19 14:00:53

將二維陣列轉化為一維陣列

1. 為了偷懶所以我寫了一個隨機生成二維陣列的函數

 /*
    * 自動建立隨機為100以內的二維陣列: int nums[x][y]
    * */
    public static int[][] CreatedDemArray(int x,int y){
        int nums[][]=new int[x][y];
        for(int i=0;i<nums.length;i++){
            for(int j=0;j<nums[i].length;j++){
                nums[i][j]=(int)(Math.random()*100);
            }
        }
        return nums;
    }

2. 定義一個5x8的二維函數

 public static void main(String[] args) {
        createdarray ca=new createdarray();
        int nums[][]=CreatedDemArray(5,8);
    }

3. 定義一個長度為40 的int 陣列,並使用System.arraycopy的方式將二維陣列填充到一維陣列temp中

  public static void main(String[] args) {
        createdarray ca=new createdarray();
        int nums[][]=CreatedDemArray(5,8);
       //定義整數陣列
        int[] temp=new int[40];
       //通過 arraycopy方法來將二維陣列填充到一維陣列temp中
        for(int i=0;i<nums.length;i++){
            System.arraycopy(nums[i],0,temp,i*8,8);
        }
 
    }

4. 如果填充到一維陣列之後我想搞點事,把一維陣列進行排序後,回填到二維陣列中

   public static void main(String[] args) {
        createdarray ca=new createdarray();
        int nums[][]=CreatedDemArray(5,8);
        int[] temp=new int[40];
        for(int i=0;i<nums.length;i++){
            System.arraycopy(nums[i],0,temp,i*8,8);
        }
       // 對一維陣列進行排序
        Arrays.sort(temp);
 
      // 將排序後的陣列進行回填
        int index=0;
        while (index<temp.length){
            for(int i=0;i<nums.length;i++){
                for(int j=0;j<nums[i].length;j++){
                    nums[i][j]=temp[index++];
                }
            }
        }
        System.out.println("排序後的陣列如下");
       // 這裡因為懶所以我自定義了一個函數 列印二維陣列
        ShowDemArray(nums);
    }

5. 補充一下上面用到的列印二維陣列

    /*
    * 輸出二維陣列 
    * 這裡我不知道怎麼寫我還去問了我前任:) 因為我實在不知怎麼傳這個參
    * 如果要做成通用的比如說既能列印整數型別又能列印字串型別的二維陣列需要用的泛型... 
    * 畢業2年我已經忘了泛型怎麼用,下次再補補
 */
public static void ShowDemArray(int[][] nums){
        for (int i=0;i<nums.length;i++){
            for (int j=0;j<nums[i].length;j++){
                System.out.print(nums[i][j]+"t");
                if((j+1)%nums[i].length==0){
                    System.out.println();
                }
 
            }
        }
    }

今天也是想當測開的一天

一維陣列轉化為二維陣列

由於經常在使用矩陣進行計算時,會首先將一維陣列轉為二維陣列。因此,在這裡記錄一下,也希望對他人有幫助。

package deal;
/*
 * author:合肥工業大學 管院學院 錢洋 
 *1563178220@qq.com
*/
public class ArryTest {

    public static void main(String[] args) {
        //建立一個一維陣列 0,1,2,3...,10
        double [] c= new double[10];
        for (int i = 0; i < c.length; i++) {
            c[i]=i;
        }
        double[][] testArr=TwoArry(c);
        for (int i = 0; i < testArr.length; i++) {
            for (int j = 0; j < testArr[i].length; j++) {
                System.out.println(testArr[i][j]);
            }
        }

    }
    //一維陣列轉化為二維陣列
    public static double[][] TwoArry(double[] onedouble){
        double[][] arr=new double[1][onedouble.length];
        for (int i = 0; i < onedouble.length; i++) {
            arr[0][i]=onedouble[i];
        }
        return arr;
    }
}

程式執行結果。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com