学习笔记——java array

一、今日重点

1、键盘输入一个下标,获取指定位置的数字
2、
输入一个数,数是从后往前加
3、增加数组内容(优化前,优化后)

二、学习内容

1、键盘输入一个下标,获取指定位置的数字
package com.jroft.afternoon;

import java.util.Scanner;

public class Ch01 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        /*
            有一个数组
         */
        int [] arr=new int[]{22,33,24,64,357,32};
        /*
            键盘输入一个下标,获取指定位置的数字
         */
        System.out.println("请输入一个下标");
        int index = sc.nextInt();
        /*
            输入的数字是否合法?
            需要判断几种情况
            输入的是一个负值
            输入的是一个正值,越界了
            正确的情况
         */
        if (index>=0&&index<=arr.length-1){
            System.out.println("对应位置的值是"+arr[index]);
        }else {
            //条件<0||>5
            //越界
            System.out.println("您的输入有误,请重新输入");
        }

    }
}

 

2、输入一个数,数是从后往前加
package com.jroft.afternoon;

import java.util.Scanner;

public class Ch02 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int [] arr=new int[5];
        /*
            输入一个数,数是从后往前加
            倒叙输入
            第一次输入的值给[arr.length-1-0]
            第二次输入的值给[arr.length-1-1]
            第三次输入的值给[arr.length-1-2]
            数组的最大下标=数组的长度-1
         */

        for (int i = 0; i <arr.length; i++) {
            System.out.println("请输入第"+(i+1)+"一个数");
            int num = sc.nextInt();
            arr[arr.length - 1] = num;

        }
        for (int i : arr){
            System.out.println(i);
        }

    }
}

 

3、增加数组内容(优化前,优化后)
优化前:
package com.jroft.afternoon;

import java.util.Arrays;
import java.util.Scanner;

public class Ch03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int [] arr=new int[2];
        int i=0;
        main:while (true){
        System.out.println("请输入数据");
        int num = sc.nextInt();
        arr[arr.length - 1-i] = num;
        i++;
        if (i>=arr.length){
            int [] newArr =new int [arr.length*2];
            for (int j = 0; j < arr.length; j++) {
                newArr[newArr.length-1-j]=arr[arr.length-1-j];
            }
            arr=newArr;
        }

        System.out.println("是否继续添加:1、是 2、否");
        String flag=sc.next();
        switch (flag){
            case "1":
                continue;
            case "2":
                System.out.println("当前数组为:" +  Arrays.toString(arr));
                break main ;

        }
    }
    }
}

 


优化后:
package com.jroft.afternoon;

import java.util.Arrays;
import java.util.Scanner;

public class Ch04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[]{1, 2, 3, 4, 5};
int[] newArr = new int[arr.length * 2];
for (int j = 0; j < arr.length; j++) {
newArr[j] = arr[j];
}
arr = newArr;
main:while (true) {
System.out.println("请输入要插入数据的下标");
int index = sc.nextInt();
System.out.println("请输入要插入的数据");
int num = sc.nextInt();
/*
1.因为数组已满需要扩容
2.找到要插入数据的位置
3.插入位置后面的数据需要向后移位
*/
//定义一个临时变量,存储原来index位置的元素
/* int temp=arr[index];
//把要插入的数存到指定位置
arr[index] = num;
//原来位置后面的那个数向后移一位
arr[index+2]=arr[index+1];
arr[index+1]=temp;*/
//扩容

//要插入的位置的原始数据保存起来
int temp = arr[index];
//把要插入的数据放到指定位置
arr[index] =num;
//判断要移位的数据的个数
for (int i = 0; i < arr.length - index; i++) {
arr[arr.length - 1]= arr[arr.length - 1-i];
}
arr[index + 1]=temp;
System.out.println("现在数组为:" + Arrays.toString(arr));
System.out.println("是否继续添加:1、是 2、否");
String flag=sc.next();
switch (flag){
case "1":
continue;
case "2":
System.out.println("当前数组为:" + Arrays.toString(arr));
break main ;


}


}
}
}

 

posted @ 2022-07-16 21:58  LJMMJL  阅读(31)  评论(0)    收藏  举报