2020.7.14课堂笔记(一维数组及典型应用)

Demo1:

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/14 14:04
 * @Description:
 **/
public class Demo1 {
    public static void main(String[] args) {
        //声明
        int[] a;
        String b[];
        double []c;
        //分配空间,使用new关键字来分配空间,
        // new关键字是java中优先级最高的,使用一个东西要先创建好
        a=new int[5];
        b=new String[6];
        c=new double[4];
        //赋值,指定每一个下标
        a[0]=10;
        a[1]=14;
        a[2]=18;
        a[3]=24;
        a[4]=33;//可以有一部分不赋值
        //声明的同时分配空间
        char[] ch=new char[10];
        float[] f={11.1f,22.2f};//声明分配空间并赋值
        //基本上不用
        int []d=new int[]{1,2,3};
        /*int[]g;
        g={1,2,3};//Array initializer is not allowed here*/
    }
}

Demo1_1:

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/14 14:50
 * @Description:各种状态下的数组地址
 **/
public class Demo1_1 {
    public static void main(String[] args) {
        int[] a=null;
        String[] b=new String[3];
        char[] c={'a','b','c'};
        double[] d={1.2,2.0};
        b[3]="abc";//数组越界 异常
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);//char类型可以直接打印出值,char数组相当于String字符串
        System.out.println(d);
    }
}

Demo3:

import java.util.Scanner;
/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/14 15:51
 * @Description:
 **/
public class Demo3 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int[]scores=new int[5];
        for (int i = 0; i <scores.length ; i++) {
            System.out.println("请输入第"+(i+1)+"个值");
            scores[i]=sc.nextInt();
        }
        //scores.fori
        for (int i = 0; i < scores.length; i++) {
            System.out.print(scores[i]+",");
        }
        System.out.println();
        //求最大值
        int max=scores[0];
        for (int i = 1; i < scores.length; i++) {
            if(scores[i]>max){
                max=scores[i];
            }
        }
        System.out.println("最大值为:"+max);
    }
}

Demo4:
增删改查
数组范围内:
增:数组的定义、赋值
删;程序运行结束,不在内存当中了
改:对数组元素的重新赋值,或者地址改变
查:查看数组的地址和元素的值

数组元素的扩充/长度范围外的:长度要变化(新的数组)
增:元素个数的增加
删:元素个数的减少

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

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/14 16:06
 * @Description:数组增加元素
 **/
public class Demo4 {
    public static void main(String[] args) {
        int[] a={99,85,82,63,60};
        int[] b=new int[6];
        for (int i = 0; i < a.length; i++) {
            b[i]=a[i];
        }
        //把数组转成的String字符串
        System.out.println(Arrays.toString(b));
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数:");
        int num = sc.nextInt();
        boolean isInsert=false;
        for (int i = b.length-2; i >=0; i--) { //从后向前遍历
            if(num>b[i]){
                b[i+1]=b[i];//下标后移
            }else{
                b[i+1]=num;
                isInsert=true;
                break;
            }
        }
        if(isInsert==false){
            b[0]=num;
        }
        System.out.println(Arrays.toString(b));
    }
}

Demo5:

import java.util.Arrays;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/14 17:16
 * @Description:
 **/
public class Demo5 {
    public static void main(String[] args) {
        /*选择排序逻辑:
        * 从前向后对每一个下标对应的元素作为基准位
        * 与后面所有的元素进行比较,找出最小值
        * 与当前下标的元素进行交换
        * 进行下一次循环
        * */
        int[] a={1,3,2,5,8,4};
        //i代表选取的基准位,j代表的在动的
        for(int i=0;i<a.length-1;i++){
            int min=a[i];
            int tmp=i;
            for (int j = i+1; j <a.length ; j++) {
                if(min>a[j]){
                    min=a[j];
                    tmp=j;
                }
            }
            a[tmp]=a[i];
            a[i]=min;
        }
        System.out.println(Arrays.toString(a));
    }

}


Demo6:

import java.util.Arrays;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/14 17:37
 * @Description:插入排序
 **/
public class Demo6 {
    public static void main(String[] args) {
        //逻辑 从第二位开始,向前比较,进行插入逻辑
        int[] a={1,3,2,5,8,4};
        for (int i = 1; i <a.length ; i++) {
            int tmp=a[i];
            boolean isInsert=false;
            for (int j = i-1; j >=0 ; j--) {
                //如果遇到比自己大的,大的值就后移
                //如果遇到比自己小的,就在后方插入
                //如果一直没插入,就插入在首位
                if(tmp<a[j]){
                    a[j+1]=a[j];
                }else{
                    a[j+1]=tmp;
                    isInsert=true;
                    break;
                }
            }
            if(!isInsert){
                a[0]=tmp;
            }
        }
        System.out.println(Arrays.toString(a));
    }
}

Test1:

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/14 14:14
 * @Description:计算20位同学的平均分,同时打印每一个分数
 **/
public class Test1 {
    public static void main(String[] args) {
        int[] scores=new int[30];
        //使用随机数对数组赋值
        for(int i=0;i<30;i++){
            scores[i]=(int)(Math.random()*10+90);
        }
        //遍历查看数组中每一个元素
        System.out.print("[");
        for(int i=0;i<scores.length;i++){
            if(i==scores.length-1){
                System.out.println(scores[i]+"]");
                break;
            }
            System.out.print(scores[i]+", ");
        }
        //计算平均分
        double sum=0;
        for(int i=0;i<scores.length;i++){
            sum+=scores[i];
        }
        System.out.println("总分为"+sum+"\n平均分为"+sum/scores.length);
        System.out.println("------------------------");
        System.out.print("[");
        //一般来说用于遍历,不能赋值,取不到下标
        for(int a:scores){ //增强for循环
            System.out.print(a+",");
        }
        System.out.println("]");
        System.out.println(scores);
        System.out.println(scores.hashCode());
    }
}

Test2

import java.util.Scanner;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/14 15:03
 * @Description:
 **/
public class Test2 {
    public static void main(String[] args) {
        int[] num=new int[]{8,4,2,1,23,344,12};
        int sum=0;
        for (int i = 0; i <num.length ; i++) {
            sum+=num[i];
            System.out.print(num[i]+"\t");
        }
        System.out.println("数列中所有数值之和:"+sum);
        boolean flag=false;
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数:");
        int id= sc.nextInt();
        int i = 0;//
        for (; i <num.length ; i++) {
            if(id==num[i]){
                flag=true;
                break;
            }
        }
        if(flag){  //i==num.length
            System.out.println("数列中包含此数");
        }else{
            System.out.println("数列中不包含此数");
        }
    }
}

Test3

import java.util.Scanner;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/14 16:33
 * @Description:
 **/
public class Test3 {
    public static void main(String[] args) {
        int[] price=new int[4];
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入四家店的价格:");
        for (int i = 0; i < price.length; i++) {
            System.out.print("第"+(i+1)+"家店的价格:");
            price[i] = sc.nextInt();
        }
        int min=price[3];
        for (int i = price.length-1; i >=0; i--) {
            if(price[i]<min){
                min=price[i];
            }
        }
        System.out.println("最低价格为:"+min);
    }
}

Test03:

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

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/14 16:51
 * @Description:从数组中删除一个元素
 **/
public class Test03 {
    public static void main(String[] args) {
        int[] a={99,85,82,63,60};
        int[] b=new int[4];
        //如果要删哪个数,就把除那个数之外的赋值到b
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入要删除的下标:");
        int num=sc.nextInt();
        int j=0;
        for (int i = 0; i <a.length ; i++) {
            if(i==num)continue;
            b[j]=a[i];
            j++;
        }
        System.out.println(Arrays.toString(b));
    }
}

Test4:

import java.util.Scanner;

/**
 * @Author: ChaoKeAiMuZhi
 * @Date: 2020/7/14 16:57
 * @Description:
 **/
public class Test4 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入本月的消费记录:");
        int[] num=new int[5];
        int sum=0;
        for (int i = 0; i < num.length; i++) {
            System.out.print("请输入第"+(i+1)+"笔购物金额:");
            num[i] = sc.nextInt();
            sum+=num[i];
        }
        System.out.println("序号\t\t金额(元)");
        for (int i = 0; i < num.length; i++) {
            System.out.println(i+1+"\t\t"+num[i]);
        }
        System.out.println("总金额\t"+sum);
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值