首頁 > 軟體

Java陣列操作經典例題大總結

2022-03-22 16:00:07

陣列中元素的求和

public class T02 {
    public static void main(String[] args) {
        int[][]arr=new int[][]{{1,2,3,4,5},{1,2,3,5},{8,9,7}};
        int sum=0;
        for(int i=0;i< arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
               sum=arr[i][j]+sum;
            }
        }
        System.out.println("sum="+sum);
    }
}
//和為50

使用二維陣列列印一個10行的楊輝三角

public class T02 {
    public static void main(String[] args) {
        //宣告並且初始化陣列
        int[][]arr=new int[10][];
        //給陣列的元素賦值
        for(int i=0;i< arr.length;i++){
            arr[i]=new int[i+1];
            arr[i][0]=arr[i][i]=1;
            if(i>1){
                for(int k=1;k<arr[i].length-1;k++){
                    arr[i][k]=arr[i-1][k-1]+arr[i-1][k];
                }
            }
        }
        //遍歷陣列
        for(int i=0;i< arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
                System.out.print(arr[i][j]+"t");
            }
            System.out.println();
        }
    }
}

求數值型陣列中元素的最大值、最小值、平均數、總和等

public class T03 {
    public static void main(String[] args) {
        int[] arr=new int[10];
        for(int i=0;i< arr.length;i++){
            arr[i]=(int)Math.random()*((99-10+1)+10);
            //[a,b]中的亂數的公式:Math.readom()*((b-a+1)+a).
            //注意這裡出來的為double型別。
        }
        //求最大值
        int maximum=0;
        for(int i=0;i< arr.length;i++){
            if(maximum<arr[i]){
                maximum=arr[i];
            }
        }
        System.out.println("最大值為:"+maximum);
        //求最小值
        int minimum=arr[0];
        for(int i=1;i< arr.length;i++){
            if(minimum>arr[i]){
                minimum=arr[i];
            }
        }
        System.out.println("最大值為:"+minimum);
        //求和
        int sum=0;
        for(int i=1;i< arr.length;i++){
            sum=sum+arr[i];
        }
        System.out.println("sum:"+sum);
        //求平均數
        System.out.println("平均數為:"+sum/ arr.length);
    }
}

*使用簡單陣列

(1)建立一個名為T04的類,在main()方法中宣告array1和array2兩個變數

他們是int[]型別的陣列。

(2)使用大括號{},把array1初始化為8個素數:2,3,5,7,11,13,17,19。

(3)顯示array1的內容。

(4)賦值array2變數等於array1,修改array2中的偶索引元素,使其等於索引值(如array[0]=0, array[2]=2)。列印出array1。**思考:array1和array2是什麼關係?
拓展:修改題目,實現array2對array1陣列的複製

public class T04 {
    public static void main(String[] args) {
        int[] array1,array2;
        array1=new int[]{2,3,5,7,11,13,17,19};
        for(int i=0;i< array1.length;i++){
            System.out.print(array1[i]+"t");
        }     //賦值array1變數等於array2     //不能稱作陣列的複製
        array2=array1;
        for(int i=0;i< array1.length;i++){
            if(i%2==0){
                array2[i]=i;
            }
        }
        System.out.println();
        System.out.println("******************************************");
        for(int i=0;i< array1.length;i++){
            System.out.print(array1[i]+"t");
        }
    }
}

(1)array1與array2的地址值一樣,都指向了堆空間唯一的陣列實體

(2)

 for(int i=0;i< array1.length;i++){
            array2[i]=array1[i];
        }

方法2

int i=0;
        int j=0;
        for(i=0,j= arr.length-1;i<j;i++,j--){
            int a=arr[i];
            arr[i]=arr[j];
            arr[j]=a;
        }

線性查詢

public class T05 {
    public static void main(String[] args) {
        int[]arr=new int[]{1,2,3,4,5,6,7,8,9};
        for(int i=0;i< arr.length;i++){
            System.out.print(arr[i]+"t");
        }
        System.out.println();
        for(int i=0;i< arr.length;i++){
            if(i< arr.length-1-i){
                int a=arr[i];
                arr[i]=arr[arr.length-1-i];
                arr[arr.length-1-i]=a;
            }
        }
        for(int i=0;i< arr.length;i++){
            System.out.print(arr[i]+"t");
        }
    }
}

二分法查詢

//前提必須是在有序的條件下

例子:先看一下從小到大的

import java.util.Scanner;

public class T07 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int a= s.nextInt();
        int[]arr=new int[]{1,2,3,4,6,7,8,9,10};
        int left=0;
        int right= arr.length-1;
        boolean is=true;
        while(left<=right){
            int average=(int)(left+right)/2;
            if(arr[average]>a){
                right=average-1;
            } else if(a==arr[average]){
                System.out.println("找到了,下標是:"+average);
                is=false;
            } else {
                left = average + 1;
//            }if(left==right){
//                System.out.println("沒有找到");
//                is=false;
            }
        }
        if(is){
            System.out.println("很遺憾沒有找到");
        }
    }
}

氣泡排序

public class T08 {
    public static void main(String[] args) {
        int[]arr=new int[]{33,55,2,6,-8,-5,66,1,63};
        for(int i=0;i< arr.length-1;i++){
            for(int j=0;j< arr.length-1-i;j++){
                if(arr[j]>arr[j+1]){
                    int a=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=a;
                }
            }
        }
        for(int i=0;i< arr.length;i++) {
                System.out.println(arr[i]);
        }
    }
}

求一個3*3矩陣對角線元素之和

這是一道矩陣的程式設計實現題。Java中矩陣一般都是通過二維陣列實現的。

具體程式碼如下:

import java.util.Random;

/**
 * 求一個3*3矩陣對角線元素之和
 *
 * @author ChenZX
 *
 */
public class Test04 {

    public static void main(String[] args) {
        int sum = 0; //和
        int[][] arr = new int[3][3];
        Random r = new Random();
        for(int i=0;i<3;i++){    //隨機生成矩陣
            for(int j=0;j<3;j++){
                arr[i][j] = r.nextInt(10);  //0到9
            }
        }
        for(int i=0;i<3;i++){      //遍歷矩陣
            for(int j=0;j<3;j++){
                System.out.print(arr[i][j]+" ");   //列印矩陣元素
                if(i==j){   //如果為對角線元素
                    sum += arr[i][j];  //求和
                }
            }
            System.out.println(); //每輸出3個元素換行
        }
        System.out.println("此矩陣對角線的和為:"+sum);
    }
}

 

總結 

到此這篇關於Java陣列操作經典例題的文章就介紹到這了,更多相關Java陣列例題內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


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