Java学习day04-数组
发布日期:2021-06-23 02:02:56 浏览次数:31 分类:技术文章

本文共 7489 字,大约阅读时间需要 24 分钟。

数组

今日目标:

数组

1.为什么使用数组?

1.什么是数组?:

一组类型相同的数据
为什么不能存放不同的数据类型?
每种数据类型在内存空间中占据的大小不同
2.为什么要用到数组?
业务所需,需要对多个同种数据类型的数据进行打包处理。

字符数组比较特殊,不能输出地址值,println会自动将字符转换为字符串输出

在这里插入图片描述
定义数组时会创建一个对象空间
在这里插入图片描述

int arr[] = new int[]{
1,2,3}; int b[]=arr; arr[1]=8; System.out.println(b[1]);//8

方法里是形参,不会改变a的输出

public static void main(String[] args) {
int a=2; fun(a); System.out.println(a);//2 } private static int fun(int a) {
a=10; return a; }

2.数组的使用步骤:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上是基本使用步骤,有没有更简单的步骤?

1.边声明边赋值
在这里插入图片描述

private static void one() {        int arr1[];//定义        arr1=new int[7];//指定长度        int arr[]=new int[5];//定义加指定长度        arr[0]=1;// 赋值 1        arr[1]=2;        arr[2]=3;        arr[3]=4;        arr[4]=5;        int arr2[]=new int[]{1,2,3};//定义加指定长度加赋值        int arr3[]={2,4,5};//定义加指定长度加赋值 简写       /* for (int a:arr){            System.out.println(a);        }*/    }

foreach简化数组和集合的遍历

foreach的语句格式:
for(元素类型t 元素变量x : 遍历对象obj){
引用了x的java语句;
}
2.用户边输入边动态赋值:基本步骤
案例:输入5名学员的java成绩,并求出平均数。

public void test1() {       //定义并初始化一个数组       int arr[] = {2, 3, 1};        System.out.println("----1----排序前的一维数组");       for (int x : arr) {            System.out.println(x); //逐个输出数组元素的值        }

3.处理数据----增强型for

ForEach

数组赋值以后如何取出其中的每个数据呢?
案例:
打印数组中的每个数据?
普通for循环和增强for循环

4.栈内存和堆内存:

Int a=9;

都是用于存储数据的,栈:存储变量名,基本数据类型在常量池,不包括String
堆:存储引用数据类型:数组,集合,类(对象),接口
举例:
定义两个String,==比较
Next()Scanner中输入的String和定义的String不一样。
综合练习:
1.
在这里插入图片描述

private static void one() {        Scanner sc=new Scanner(System.in);        int a[]=new int[]{8,4,2,1,23,344,12};        int b=0;        System.out.print("数列的值分别为:");        for (int i=0;i

在这里插入图片描述

2.求最大最小值

打擂台原理

private static void two() {        Scanner sc=new Scanner(System.in);        int a[]=new int[]{8,4,2,1,23,344,12};        int max=a[0],min=a[0];        for (int i=1;i
a[i]?max:a[i]; min=min

在这里插入图片描述

3.排序,和插值

在这里插入图片描述

4.冒泡排序(明天讲)

学会调试程序

作业:

1.从键盘接受10个整数,求出其中的最大值和最小值。

private static void One() {        Scanner sc=new Scanner(System.in);        System.out.println("请输入你想要输入十个的数字(正整数):");        int a[]=new int[10];        int max;        int min;        for (int i=0;i<=(a.length-1);i++){            a[i]=sc.nextInt();        }        max=a[0];        min=a[0];        System.out.println("你输入的十个数分别为:");        for (int i=0;i<=a.length-1;i++){            max=max>a[i]?max:a[i];            min=min

在这里插入图片描述

在这里插入图片描述

2.输入10个数,保存在一个数组中,在数组中查找某个数字,给出是否找到信息,如果找到了输出该数在数组中所处的位置,如果找不到输出“找不到”

private static void Two() {        Scanner sc = new Scanner(System.in);        System.out.println("请输入你想要输入十个的数字(正整数):");        int a[] = new int[10];        for (int i = 0; i <= (a.length - 1); i++) {            a[i] = sc.nextInt();        }        System.out.println("请输入你要查找的数字(正整数):");        int b = sc.nextInt();        boolean c=true;        for (int i = 0; i < a.length - 1; i++) {            if (a[i] == b) {                System.out.println("找到了,在数组的中的第"+(i+1)+"位");                c=false;                break;            }        }        if(c){            System.out.println("找不到");        }    }

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.将一个数组中的元素逆序输出,即第一个元素和最后一个元素交换,第二个数与倒数第二元素交换……,例如:原数组为:9 2 5 7 8,逆序后的数组为:8 7 5 2 9

在这里插入图片描述

private static void three() {        int a[]=new int[]{8,4,2,1,23,344,12};        int b[]=new int[]{8,4,2,1,23,344,12,20};            for(int i=0;i

在这里插入图片描述

4.顾客从超市采购了10件商品,编写一个程序,用于接受每件商品的价格,计算应付的总金额。并分别打印出各个商品的价格以及应付的总金额的小票。

private static void four() {        String a[]={"鸡蛋","牛奶","饼干","矿泉水"                ,"杯子","洗发精","沐浴露","牙刷","牙膏","鱼"};        Scanner sc=new Scanner(System.in);        double b[]=new double[10];        for (int i=0;i

在这里插入图片描述

5.接收并输出某公司某月的考勤和扣款信息,假设公司有5个员工,每个员工的考勤项有上下班忘打卡、迟到、早退、旷工,其中上下班忘打卡扣款10元/次,迟到和早退扣款为20元/次,旷工100元/天,参考图如下(参考图中是以3个员工为例):

private static void five() {        int a[]=new int[5];//员工编号        int b[]=new int[5];//忘打卡        int c[]=new int[5];//迟到        int d[]=new int[5];//早退        int e[]=new int[5];//旷工        Scanner sc=new Scanner(System.in);        for (int i=0;i<1;i++){            System.out.println("请输入第"+(i+1)+"个员工编号:");            a[i]=sc.nextInt();            System.out.println("请输入第"+(i+1)+"个员工忘打卡次数:");            b[i]=sc.nextInt();            System.out.println("请输入第"+(i+1)+"个员工迟到次数:");            c[i]=sc.nextInt();            System.out.println("请输入第"+(i+1)+"个员工早退次数:");            d[i]=sc.nextInt();            System.out.println("请输入第"+(i+1)+"个员工旷工次数:");            e[i]=sc.nextInt();        }        System.out.println("************本月考勤信息***************");        for (int i=0;i<1;i++){            System.out.println("员工编号  忘打卡   迟到  早退  旷工  总罚款(单位元)");            System.out.println(a[i]+"         "+b[i]*10+"       "+c[i]*20+"   "+d[i]*20+"    "+e[i]*100+"   "+                    (b[i]*10+c[i]*20+d[i]*20+e[i]*100));        }    }

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.动态输入一组数,存到数组里面,利用四种循环打印出数组的所有元素。

private static void six() {        Scanner sc = new Scanner(System.in);        System.out.println("你想要输入几个数(正整数):");        int shu;        shu=sc.nextInt();        System.out.print("请输入这些数:");        int a[] = new int[shu];        for (int i = 0; i <= (a.length - 1); i++) {//给数组赋值            a[i] = sc.nextInt();        }        System.out.print("打印的结果为: ");        for (int i = 0; i <= (a.length - 1); i++) {            System.out.print(a[i]+" ");        }        System.out.println(" ");//换行        System.out.print("打印的结果为: ");        int a1=0;        while (a1

在这里插入图片描述

7.定义一个有序数列{1,5,20,30,80},要求用户输入一个数字,判断该数字应该插入到数组中的下标是?

在这里插入图片描述

private static void seven() {        int a[]=new int[]{1,5,20,30,80};        Scanner sc = new Scanner(System.in);        System.out.println("请输入一个数字:");        int b=sc.nextInt();        boolean c=true;        for (int i=0;i
b){ System.out.println("这个数字应该插入的下标为:"+i); c=false; break; } } if (c){ System.out.println("这个数字应该插入的下标为: 5"); } }

在这里插入图片描述

8.定义一个长度为8的数组,要求前7个元素赋值,最后一个不赋值,从第5个元素开始,依次覆盖后面的元素,并输出最终结果。

在这里插入图片描述

private static void eight() {        Scanner sc = new Scanner(System.in);        int a[]=new int[8];        System.out.println("请输入七个数:");        for (int i=0;i<7;i++){            a[i]=sc.nextInt();        }        System.out.println("这八个数分别为:");        for (int i=0;i
=4;i--){ a[i+1]=a[i]; } System.out.println("最终结果为:"); for (int i=0;i

在这里插入图片描述

9.定义一个有序数列,{1,5,20,30,80},要求用户输入一个数字,然后插到数组中,并保持升序,不能使用冒泡排序。

在这里插入图片描述

private static void nine() {        int a[]=new int[]{1,5,20,30,80,0};        System.out.println("这个数组为:");        for (int i = 0; i 
b){ x=i; break; } } System.out.println("这个数字应该插入的下标为:"+x); for (int i=a.length-1;i>x;i--){//替换插入之后的数 a[i]=a[i-1]; } a[x]=b;//替换插入的数 System.out.println("插入后的数组为:"); for (int i = 0; i

在这里插入图片描述

------------------------------今天不做------------------

1.使用冒泡排序对数组{13,18,99,56,44,67}进行升序和降序。

private static void job1() {        int a[]={13,18,99,56,44,67};        for(int i=0;i
a[j+1]){ int b=a[j+1]; a[j+1]=a[j]; a[j]=b; } } } System.out.println("升序后的排列为:"); for (int i=0;i

在这里插入图片描述

2.利用冒泡排序实现数组长度为10的特定排序:1-5升序,6-10降序。

private static void job2() {        int a[]={5,4,3,2,1,6,7,-1,9,10};        System.out.println("数组原为:");        for (int i=0;i
a[j+1]){ int b=a[j+1]; a[j+1]=a[j]; a[j]=b; } } } for(int i=0;i<5;i++){//降序 for (int j=5;j

在这里插入图片描述

转载地址:https://blog.csdn.net/qq_45850095/article/details/110498807 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:视频+课件|基于深度学习方式的多视图立体匹配算法
下一篇:春晚的创意担当,给了这个1岁的"拓荒牛"机器人

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月22日 10时36分19秒