Java学习第三天

1.数组逆转

给定一个数组 int[] arr = { 1, 2, 3, 4, 5}

思路:

1.找规律 arr[0] 和 arr[4] 交换 -> arr[ 5, 2, 3, 4, 1] arr[1] 和 arr[3] 交换 -> arr[ 5, 2, 3, 4, 1] 一共交换两次 = arr.length /2

  1. 第一个和第五个 第二个和第四个 也就是 arr[i] 和 arr[arr.length-1-i]

代码实现

import javax.swing.*;
import  java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int[] arr = { 1, 2 ,3, 4, 5};
        System.out.print( "逆序前:");
        for(int i = 0; i < arr.length; i++){
            System.out.print(arr[i] + " ");
        }
        for (int i = 0; i < (arr.length /2); i++){
            int temp = 0;
            temp = arr[i];
            arr[i] = arr[arr.length-1-i];
            arr[arr.length-1-i] = temp;
        }
        //验证
        System.out.println();
        System.out.print( "逆序后:");
        for(int i = 0; i < arr.length; i++){
            System.out.print(arr[i] + " ");
        }
    }

}

编译结果
在这里插入图片描述

2.数组扩容

扩容数组 int[] a = { 1 , 2 ,3 ,4 ,5} ,增加6到数组中 完成上述任务后让用户是否添加,添加成功后是否继续 y/n;

代码及思路

import javax.swing.*;
import  java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int[] arr = { 1, 2 ,3, 4, 5};
        int[] arrNew = new int[arr.length + 1];
        //拷贝数组arr
        for(int i = 0; i < arr.length; i++){
            arrNew[i] =arr[i];
        }
        //添加数字6
        arrNew[arr.length] = 6;
        //引用数组arrNew 使之和arr共享堆内存 arr原来的内存则会被销毁
        arr = arrNew;
        // 验证 ——————遍历数组
        for(int i = 0; i < arr.length; i++){
            System.out.println(arr[i]);
        }
    }

}

编译结果

在这里插入图片描述

用户判断是否添加思路及代码

import javax.swing.*;
import  java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int[] arr = { 1, 2 ,3, 4, 5};
        Scanner sc = new Scanner(System.in);
        while (true){
            int[] arrNew = new int[arr.length + 1];
            //拷贝数组arr
            for(int i = 0; i < arr.length; i++){
                arrNew[i] =arr[i];
            }
            //添加数字
            System.out.println("请输入添加的数字:");
            arrNew[arr.length] = sc.nextInt();
            //引用数组arrNew 使之和arr共享堆内存 arr原来的内存则会被销毁
            arr = arrNew;
            // 验证 ——————遍历数组
            System.out.println("添加后:");
            for(int i = 0; i < arr.length; i++){
                System.out.println(arr[i]);
            }
            System.out.println("是否继续添加: y/n ?");
            char a = sc.next().charAt(0);
            if (a == 'n'){
                break;
            }
        }
    }

}

编译结果

在这里插入图片描述

3.有一个数组 {1, 2, 3, 4, 5}, 可以将该数组进行缩减,提示用户是否继续缩减,每次缩减最后那个元素。当只剩

下最后一个元素,提示,不能再缩减。

代码及思路

import javax.swing.*;
import  java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int[] arr = { 1, 2 ,3, 4, 5};
        Scanner sc = new Scanner(System.in);
        while (true){
            int[] arrNew = new int[arr.length -1];
            //拷贝数组arr
            for(int i = 0; i < arr.length -1; i++){
                arrNew[i] =arr[i];
            }
            //引用数组arrNew 使之和arr共享堆内存 arr原来的内存则会被销毁
            arr = arrNew;
            // 验证 ——————遍历数组
            System.out.println("缩减后:");
            for(int i = 0; i < arr.length; i++){
                System.out.println(arr[i]);
            }
            if (arr.length == 1){
                System.out.println("当前只剩一个元素,不可继续缩减");
                break;
            }
            System.out.println("是否继续缩减: y/n ?");
            char a = sc.next().charAt(0);
            if (a == 'n'){
                break;
            }
        }
    }

}

编译结果

在这里插入图片描述

4.冒泡排序
import javax.swing.*;
import  java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int[] arr = { 5,4,3,2,1};
        //冒泡排序
        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 temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        for ( int i = 0; i < arr.length; i++){
            System.out.print(arr[i] + " ");
        }
    }

}

编译结果
在这里插入图片描述

5.看一个需求:动态创建下面二维数组,并输出

i = 0: 1

i = 1: 2 2

i = 2: 3 3 3

代码

import javax.swing.*;
import  java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int[][] arr = new int[3][];//开辟动态二维数组
        for (int i = 0; i < arr.length; i++){
            arr[i] = new int[i+1];//为每一行数组开辟空间
            for(int j = 0; j < arr[i].length; j++){
                arr[i][j] = i + 1;
            }

        }
        for (int i = 0; i < arr.length; i++){
            for (int j =0; j < arr[i].length; j++){
                System.out.print( "i=" + i + ": " +arr[i][j]);
            }
            System.out.println();
        }
    }
}

编译结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h9tqU8X8-1680880662857)(C:\Users\22014\AppData\Roaming\Typora\typora-user-images\image-20230407220622783.png)]

**分析:**这里主要就是int[][] arr = new int[3][];要注意,如果不给每一行开辟空间会报错null,还有在for(int j = 0; j < arr[i].length; j++){
arr[i][j] = i + 1;
}中注意数组长度,每一行长度不一样,需要和每一行数组长度保持一致。

7.int arr[][]={{4,6},{1,4,5,7},{-2}}; 遍历该二维数组,并得到和

代码

import javax.swing.*;
import  java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int arr[][]={{4,6},{1,4,5,7},{-2}}; //遍历该二维数组,并得到和
        int sum = 0; //记录二维数组总和
        for(int i = 0; i < arr.length;i++){
            for (int j = 0; j < arr[i].length; j++){
                System.out.print(arr[i][j]+ " ");
                sum+= arr[i][j];
            }
            System.out.println();
        }
        System.out.println("总和:" + sum);
    }
}

编译结果
在这里插入图片描述

8.打印杨辉三角
import javax.swing.*;
import  java.util.Scanner;
public class Main {
    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];//给每一行数组开辟空间
            for (int j = 0; j < arr[i].length-1; j++){
                if( j == 0 || j == arr[i].length-1  ){
                    arr[i][j] = 1;
                }
                else {
                    arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
                }
            }
        }
        //打印杨辉三角
        for (int i = 0; i < arr.length; i++){
            for (int j = 0; j < arr[i].length; j++){
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}

编译结果
在这里插入图片描述

总结

今天之前都认真了很多,但是效率很低,容易犯小错误,需要再短时间内提高学习效率!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值