how2j.cn


工具版本兼容问题
数组是一个固定长度的,包含了相同类型数据的 容器


本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



8分35秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器



步骤 1 : 声明数组   
步骤 2 : 创建数组   
步骤 3 : 访问数组   
步骤 4 : 数组长度   
步骤 5 : 练习-数组最小值   
步骤 6 : 答案-数组最小值   

int[] a; 声明了一个数组变量。
[]表示该变量是一个数组
int 表示数组里的每一个元素都是一个整数
a 是变量名
但是,仅仅是这一句声明,不会创建数组

有时候也会写成int a[]; 没有任何区别,就是你看哪种顺眼的问题
public class HelloWorld { public static void main(String[] args) { // 声明一个数组 int[] a; } }
public class HelloWorld {
	public static void main(String[] args) {
		// 声明一个数组
		int[] a;
	}
}
创建数组的时候,要指明数组的长度。
new int[5]
引用概念:
如果变量代表一个数组,比如a,我们把a叫做引用
与基本类型不同
int c = 5; 这叫给c赋值为5
声明一个引用 int[] a;
a = new int[5];
让a这个引用,指向数组
创建数组
public class HelloWorld { public static void main(String[] args) { //声明一个引用 int[] a; //创建一个长度是5的数组,并且使用引用a指向该数组 a = new int[5]; int[] b = new int[5]; //声明的同时,指向一个数组 } }
public class HelloWorld {
	public static void main(String[] args) {
		//声明一个引用
		int[] a; 
		//创建一个长度是5的数组,并且使用引用a指向该数组
		a = new int[5];
		
		int[] b = new int[5]; //声明的同时,指向一个数组
		
	}
}
数组下标基0
下标0,代表数组里的第一个数
访问数组
public class HelloWorld { public static void main(String[] args) { int[] a; a = new int[5]; a[0]= 1; //下标0,代表数组里的第一个数 a[1]= 2; a[2]= 3; a[3]= 4; a[4]= 5; } }
public class HelloWorld {
	public static void main(String[] args) {
		int[] a; 
		a = new int[5];
		
		a[0]= 1;  //下标0,代表数组里的第一个数
		a[1]= 2;
		a[2]= 3;
		a[3]= 4;
		a[4]= 5;
	}
}
.length属性用于访问一个数组的长度
数组访问下标范围是0到长度-1
一旦超过这个范围,就会产生数组下标越界异常
数组长度
public class HelloWorld { public static void main(String[] args) { int[] a; a = new int[5]; System.out.println(a.length); //打印数组的长度 a[4]=100; //下标4,实质上是“第5个”,即最后一个 a[5]=101; //下标5,实质上是“第6个”,超出范围 ,产生数组下标越界异常 } }
public class HelloWorld {
	public static void main(String[] args) {
		int[] a; 
		a = new int[5];
		
		System.out.println(a.length); //打印数组的长度
		
		a[4]=100; //下标4,实质上是“第5个”,即最后一个 
		a[5]=101; //下标5,实质上是“第6个”,超出范围 ,产生数组下标越界异常
		
	}
}
步骤 5 :

练习-数组最小值

edit  姿势不对,事倍功半! 点击查看做练习的正确姿势
首先创建一个长度是5的数组
然后给数组的每一位赋予随机整数
通过for循环,遍历数组,找出最小的一个值出来

0-100的 随机整数的获取办法有多种,下面是参考办法之一:

(int) (Math.random() * 100)

Math.random() 会得到一个0-1之间的随机浮点数,然后乘以100,并强转为整型即可。
public class HelloWorld { public static void main(String[] args) { int[] a = new int[5]; a[0] = (int) (Math.random() * 100); a[1] = (int) (Math.random() * 100); a[2] = (int) (Math.random() * 100); a[3] = (int) (Math.random() * 100); a[4] = (int) (Math.random() * 100); System.out.println("数组中的各个随机数是:"); for (int i = 0; i < a.length; i++) System.out.println(a[i]); System.out.println("本练习的目的是,找出最小的一个值: "); } }
public class HelloWorld {
	public static void main(String[] args) {
		int[] a = new int[5];
		a[0] = (int) (Math.random() * 100);
		a[1] = (int) (Math.random() * 100);
		a[2] = (int) (Math.random() * 100);
		a[3] = (int) (Math.random() * 100);
		a[4] = (int) (Math.random() * 100);
		
		System.out.println("数组中的各个随机数是:");
		for (int i = 0; i < a.length; i++) 
			System.out.println(a[i]);
		
		System.out.println("本练习的目的是,找出最小的一个值: ");
	}
}
步骤 6 :

答案-数组最小值

edit
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费3个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费3个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

3分49秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器


答案-数组最小值
public class HelloWorld { public static void main(String[] args) { int[] a = new int[5]; a[0] = (int) (Math.random() * 100); a[1] = (int) (Math.random() * 100); a[2] = (int) (Math.random() * 100); a[3] = (int) (Math.random() * 100); a[4] = (int) (Math.random() * 100); System.out.println("数组中的各个随机数是:"); for (int i = 0; i < a.length; i++) System.out.print(a[i] + " "); System.out.println(); int min = 100; for (int i = 0; i < a.length; i++) { if( a[i] < min ) min = a[i]; } System.out.println("找出来的最小数值是:" +min); } }


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2023-03-19 分享一道有点难度的题,是翻以前的评论看到有兄弟分享的,大家试着做一做
15032CXJ




1,给大家分享一道题,是我翻以前的评论,有位兄弟分享的,有一定难度,我也跟着做了一遍,觉得不错,故分享出来,大家试着做一做 2,题目如下: ①利用Math.random方法创建二维数组a和二维数组所包含的一维数组a1、a2、a3。。。(话说的比较绕,大家先查查多维数组的概念,二维数组的组成元素是一维数组) ②打印该二维数组 ③把二维数组的内容复制给一个新创建的一维数组 ④打印该一维数组 ⑤对该一维数组进行排序(从小到大) ⑥打印排序后的一维数组 ⑦将排序后的一维数组的元素,赋给原二维数组 ⑧打印该二维数组 (那位兄弟也没说题目,这是我自己结合他的代码写的题目要求,大家凑合看) 3,注意点 ①题目比较综合,涉及到的知识点不少,有些目前的阶段可能大家还没学,做不出来就先放一放,等学的东西多了再回头试试, 大致有:1,二维数组,2,数组的排序,3,Math.random方法,4,冒泡排序法,5,单层、多层循环结构,6,数组的创建与声明 ,7, ②由于题目说的可能不大清楚,所以大家先把我的代码复制到软件上跑一遍,看看执行结果,不然的话容易懵逼。。。 ③这位兄弟用的一些知识我目前也没有学,所以我是在力所能及的情况下,用自己掌握的知识做出了这道题,大家在做的时候,也应该如此,他的代码中看不懂的,没学过的,就先不要用,用你知道的方法,先确保做出这道题,代码的优化以后再考虑 ④学习每一小节(每一节内容网页的最底下都有个按钮,点击能看所有的评论,不然只能看最近这段时间的评论,这些评论太少了,不够!!!,尽可能把以前的评论也看一遍,会很有收获的!!!)
加载中
//一,这是那位兄弟的代码,我的代码在下面 
   public static void main(String[] args){
         
        //创建数组并填充随机数
        int[][] a=new int[(int) (Math.random()*100)/10][];
        for(int i=0;i<a.length;i++){
            a[i]=new int[(int) ((Math.random()*100)/10)];
            for(int j=0;j<a[i].length;j++){
                a[i][j]=(int) (Math.random()*100);
            }
        }
         
        //打印随机二维数组
        System.out.println("打印随机二维数组");
        for(int[] each:a){
            System.out.println(Arrays.toString(each));
        }
         
        //创建一维数组
        int[] b=new int[1];
        for(int i=0,j=0;i<a.length;i++){
            j+=a[i].length;
            b=new int[j];
        }
         
        //想一维数组填充二维数组并排序
        for(int i=0,j=0;i<a.length;i++){
            System.arraycopy(a[i], 0, b, j, a[i].length);
            j+=a[i].length;
        }
        Arrays.sort(b);
        System.out.println("排序一维数组为:"+Arrays.toString(b));
         
         
        //将排序的一维数组填充到二维数组
        for(int i=0,j=0;i<a.length;i++){
            a[i]=Arrays.copyOfRange(b, j, j+a[i].length);
            j+=a[i].length;
        }
         
        //打印排序后的二维数组
        System.out.println("打印排序二维数组");
        for(int[] each:a){
            System.out.println(Arrays.toString(each));
        }
    }


//二,这是我的代码
public static void main(String[] args) {
        //创建二维数组并填充随机数
        int[][] a = new int[(int) ((Math.random() * 100) / 10) + 1][];
        for (int i = 0; i < a.length; i++) {
            a[i] = new int[(int) ((Math.random() * 100) / 10 + 1)];
            for (int j = 0; j < a[i].length; j++) {
                a[i][j] = (int) (Math.random() * 100);
            }
        }
        //打印随机二维数组
        System.out.println("打印随机二维数组");
        for (int i = 0; i < a.length; i++) {
            System.out.print("[");
            for (int j = 0; j < a[i].length; j++) {
                System.out.print(" " + a[i][j] + " ");
            }
            System.out.print("]");
            System.out.println();
        }

        //创建一维数组,用于接收二维数组中的每一个元素
        //知识点:二维数组的每个组成元素都是一维数组
        int[] b = new int[1];//定义一个一维数组,用于接收二维数组中每个一维数组的元素,暂定该一维数组的长度为1
        int j = 0;//定义该变量,用于接收该二维数组的各个一维数组的数组长度的总和
        for (int i = 0; i < a.length; i++) {
            j += a[i].length;
        }
        b = new int[j];

        int count1 = 0;
        for (int i = 0; i < a.length; i++) {
            for (int k = 0; k < a[i].length; k++) {
                b[count1] = a[i][k];
                count1++;
            }
        }
        //打印该一维数组
        System.out.println("========分割线=======");
        System.out.println("打印该一维数组");
        System.out.println("[");
        ;
        for (int i = 0; i < b.length; i++) {
            System.out.print(b[i] + " ");
        }
        System.out.println("]");
        //对创建的该一维数组排序
        for (int i = 1; i < b.length; i++) {
            for (int k = 1; k <= b.length - i; k++) {
                if (b[k - 1] > b[k]) {
                    int temp = b[k-1];
                    b[k-1] = b[k];
                    b[k] = temp;
                }
            }
        }
        //打印经过排序后的一维数组
        System.out.println("========分割线=======");
        System.out.println("打印经过排序后的一维数组");
        System.out.println("[");
        ;
        for (int i = 0; i < b.length; i++) {
            System.out.print(b[i] + " ");
        }
        System.out.println("]");

        //将排序的一维数组填充到原二维数组,其实就是用排序后的二维数组替换原来的二维数组
        int count2 = 0;
        for (int k = 0; k < a.length; k++) {
            for (int l = 0; l < a[k].length; l++) {
                a[k][l] = b[count2];
                count2++;
            }
        }
        //打印排序后的二维数组
        System.out.println("========分割线=======");
        System.out.println("打印排序后二维数组");
        for (int i = 0; i < a.length; i++) {
            System.out.print("[");
            for (int m = 0; m < a[i].length; m++) {
                System.out.print(" " + a[i][m] + " ");
            }
            System.out.print("]");
            System.out.println();
        }
    }

							


2 个答案

15032CXJ
答案时间:2023-03-19
我的代码没怎么写注释,有些估计只有我自己能看明白,大家别被我的代码束缚了思路,重点是自己写出来,我的代码,大家就用来跑一跑,看看执行结果是什么样子就行了

15032CXJ
答案时间:2023-03-19
有句话代码里说错了。。。 “将排序的一维数组填充到原二维数组,其实就是用排序后的二维数组替换原来的二维数组” 改为: 将排序的一维数组填充到原二维数组,其实就是用排序后的该一维数组的元素替换原来的二维数组中的每个一维数组的元素



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2023-02-17 简单一点
云帆早日上岸




康康我的
package priv.sun.array;

public class ArrayCreate {
	public static void main(String[] args) {
		//	声明一个引用
		int a[];
		//	创建一个长度是5的数组,并且使用引用a指向该数组
		a = new int[5];
		
		int min=200, temp=0;	//	初始化min和temp
		
		
		for(int i=0;i<a.length;i++) {	//	循环次数为数组长度
			a[i] = (int)(Math.random()*100);	//	给数组填充值
			temp = a[i];	//	将数组中的值临时传给temp变量,便于后面比较
			System.out.print(a[i]+" ");		//	输出数组的值
			if(temp<min)	//	与最小值比较
				min = temp;		//	比min小,则把temp里的值传给min做最小值
		}		
		System.out.println();	
		System.out.println("最小的值为:"+min);	
		
		
		
	}

}

							


6 个答案

Closen1
答案时间:2023-03-21
public static void main(String[] args) { int[] a; a = new int[5]; a[0]=(int)(Math.random()*100); a[1]=(int)(Math.random()*100); a[2]=(int)(Math.random()*100); a[3]=(int)(Math.random()*100); a[4]=(int)(Math.random()*100); System.out.println("数组中各个随机数是:"); int min=100,j=0; for (int i = 0; i < a.length; i++) { System.out.println("a["+i+"]"+"="+a[i]); } for (int i = 0; i <a.length; i++) { if (a[i]<min) { j = i; min = a[j]; } } System.out.println("随机数的最小数为:a["+j+"] = "+a[j]); }

月沉
答案时间:2023-03-14
找最小值

云帆早日上岸
答案时间:2023-03-09
感谢你的建议!

怪异的羊
答案时间:2023-02-28
使用最笨拙的方法算出来了

少年与梦
答案时间:2023-02-26
你的代码有两个问题 1.a[i] = (int)(Math.random()*100); Math.random()函数返回一个浮点数,伪随机数在范围从0 到小于1,也就是说,从 0(包括 0)往上,但是不包括 1(排除 1),所以说还要在后面加+1把范围扩大为0-100,(int)((Math.random()*100)+1); 最小值的初始值设置为100即可。 2.下面的遍历数组进行比较的代码 我们假设最小值为100,拿着100和数组中的每个数循环比较,如果发现有比100小的数字就就将那个最小的数字赋值给min,输出即可。

少年与梦
答案时间:2023-02-26



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2023-02-03 练习5 - 数组最小值
2023-01-06 求指点
2022-09-15 这个随机数调用挺方便的


提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 151 条以前的提问,请 点击查看

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 基础-数组-创建数组 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图