全网详细教程——java数组
上期呢我们提到数组这个概念;
所以呢本期就来讲一讲什么是数组;
话说要是觉得不错记得点赞哈!铁铁们
java数组概念
数组概念:
数组其实也是一个容器,可以用来存储固定个数相同类型的数据数组的定义
数组中存储的数据叫做元素
特点:
1.数组是引用数据类型
2.数组的长度是固定的,也就是说可以存储固定个数的数据
3.数组中的元素的类型必须一致,也就是说数组中存储的多个数据的数据类型一致
注意:
数组有定长特性,长度一旦指定,不可更改。
创建数组
在了解数组的基础知识后呢;
下面呢,我们来看一个简单的数组:
int[]a={2,3,4,5,6,7,8,9,10};//将数组a中赋值
这样子一个简单的数组就定义好了;
但是但是!
我们往往在Java中数组它是一个变量,那么改怎么办呢?
那么其实方法也很简单;
就是创建一个数组变量即可!
Scanner in=new Scanner(System.in);
int []a=new int [/*数组长度*/];
接下来我们写一个例子来演示这个代码;
import java.util.Scanner;
public class shuz{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int []a=new int[10];
int b=1;
for(int i=0;i<10;i++)//将数组赋值
{
a[i]=b;
b=b+1;
}
int aa=0;
for(int i=0;i<10;i++)//将每个数组相加
{
aa+=a[i];
}
System.out.println(aa);
}
}
运行结果如下:
其实;
创建数组变量就是将规模为n的数组变量是由n个普通的变量组成的。
数组是一个包含多个值的变量,任何变量都可以在数组中使用。数组的尺寸没有最大限制,也不要求成员变量连续索引或者赋值。
这个代码呢可以多看几遍,有条件的铁铁呢可以记下来,说不定以后就直接套用了呢!
处理数组
既然我们现在掌握了基本的数组变量那么我们将这个数组变量运行起来;
在运行处理数组中我们普遍使用的是for循环语句;
下面来看一个例子:
import java .util.Scanner;
public class text{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int[]a={2,3,4,5,6,7,8,9,10};
int n=in.nextInt();//输入n的数值
int b=-1;
for(int i=0;i<a.length;i++)//a.length通俗点来说就是数组长度
{
if(n==a[i])//判断在数组里面有没有n这个数
{
b=i;
break;
}
}
if(b>-1){
b=b+1;
System.out.println("存在");
System.out.println(n+"位置在"+b);
}
else{
System.out.println("不存在");
}
}
}
这段代码呢就是在数组a中查询有没有输入n数值的存在;
但是我们想想,这段代码是不是太过于单调了呢?
所以我们把固定的数组变为自己可输入的数组来试一试:
只需要添加这段代码:
System.out.println("请输入几个数并用逗号隔开:");
Scanner sc = new Scanner(System.in);
String str = sc.next().toString();
String[] arr = str.split(",");
添加这段代码可以无限输入数字;
要是想控住输入数值呢只需要:
System.out.println("请输入数字:");
Scanner in = new Scanner(System.in);
int a=in.nextInt();//定义输入数值长度
int[] b=new int[a];
for(int i=0;i<a;i++)
{
b[i]=in.nextInt();
}
咳咳咳!
提醒一下:一定一定要记住这些,实在不行就截屏保存一下铁铁们!
以上呢就是处理数组的知识点了;
铁铁们可以试着写一个计算输入数值平均数的一个程序;
答案呢还是放在老地方
(ps:文章最后铁铁们)
增强for循环
在上期文章中我们讲到增强for循环;
也说到这个循环大多依赖用于数组;
不知道铁铁们还记不记得了?
没事我们首先来复习一下什么是增强for循环;
(/dog可别再忘了哈!)
代码如下:
for(声明语句 : 表达式)
{
代码语句
}
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
下面呢来写一个简单的数组来具体的看一下这个循环铁铁们!
import java.util.Scanner;
public class for1{
public static void main(String[] args){
System.out.println("请输入4个数字:");
Scanner in = new Scanner(System.in);
int[] b=new int[4];
for(int i=0;i<4;i++)
{
b[i]=in.nextInt();
}
for(int k:b){
System.out.print(k+" ");
}
}
}
运行效果如下:
这个代码就是一段增强for循环的一个小小的演示;
注意:它能在不使用下标的情况下遍历数组。
多维数组
上面我们学会了一维数组那么我们试一试它的演变———多维数组;
多维数组:
可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组
那么,我们就用二维数组给铁铁们讲解;
它的格式如下:
type[][] typeName = new type[typeLength1][typeLength2];
//type 可以为基本数据类型和复合数据类型,
//typeLength1 和 typeLength2 必须为正整数
//typeLength1 为行数,typeLength2 为列数。
知道了它的格式那么不妨我们试试来写一个二维数组吧!
int[][] temp;
temp=new int[][]
{
{1,2},{3,4}
};
上述代码创建了一个二行二列的二维数组 temp,并对数组中的元素进行了初始化;
铁铁们可以看一下下面这个图:
下面呢我们来讲一讲获取二维数组中的元素:
获取二维数组中的元素:
一、获取单个元素
在上面呢我们创建并初始化了一个二行二列的 int 类型数组 temp。当需要获取二维数组中元素的值时,也可以使用下标来表示;
语法如下:
array[i-1][j-1];
其中,array 表示数组名称,i 表示数组的行数,j 表示数组的列数。例如,要获取第二行第二列元素的值,应该使用 temp[1][1]来表示。这是由于数组的下标起始值为 0,因此行和列的下标需要减 1。
二、获取全部元素
在一维数组中直接使用数组的 length 属性获取数组元素的个数;
而在二维数组中,直接使用 length 属性获取的是数组的行数,在指定的索引后加上 length(如 array[0].length)表示的是该行拥有多少个元素,即列数。
如果要获取二维数组中的全部元素,最简单、最常用的办法就是使用 for 语句。
下面呢我们来看个例子:
public static void main(String[] args)
{
double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5 }};
for(int i=0;i<class_score.length;i++)
{ //遍历行
for(int j=0;j<class_score[i].length;j++)
{
System.out.println("class_score["+i+"]["+j+"]="+class_score[i][j]);
}
}
}
上述代码使用嵌套 for 循环语句输出二维数组。在输出二维数组时,第一个 for 循环语句表示以行进行循环,第二个 for 循环语句表示以列进行循环,这样就实现了获取二维数组中每个元素的值的功能。
对了!
现在讲的比较重要可能会枯燥,但是铁铁们要坚持下去!马上就好啦!
那么我们接的看它的运行效果如下:
class_score[0][0]=100.0
class_score[0][1]=99.0
class_score[0][2]=99.0
class_score[1][0]=100.0
class_score[1][1]=98.0
class_score[1][2]=97.0
class_score[2][0]=100.0
class_score[2][1]=100.0
class_score[2][2]=99.5
class_score[3][0]=99.5
class_score[3][1]=99.0
class_score[3][2]=98.5
三、获取整列元素
这个只需要获取指定列的元素保持列不变,遍历每一行的该列即可。
我们来看一个例子铁铁们!
public static void main(String[] args)
{
double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}};
Scanner scan=new Scanner(System.in);
System.out.println("您要获取哪一列的值?请输入:");
int number=scan.nextInt();
for(int i=0;i<class_score.length;i++)
{
System.out.println("第 "+(i+1)+" 行的第["+number+"]个元素的值是"+class_score[i][number]);
}
}
运行效果如下:
您要获取哪一列的值?请输入:
2
第 1 行的第[2]个元素的值是99.0
第 2 行的第[2]个元素的值是97.0
第 3 行的第[2]个元素的值是99.5
第 4 行的第[2]个元素的值是98.5
四、获取整行元素
上面我们讲解了获取整列元素,那么其实获取整行元素的方法和它的方法也大同小异!
所以呢;
获取指定行的元素时,需要将行数固定,然后只遍历该行中的全部列即可。
来来来,看一个例子铁铁们!(ps:快结束了坚持住!)
public static void main(String[] args)
{
double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}};
Scanner scan=new Scanner(System.in);
System.out.println("当前数组只有"+class_score.length+"行,您想查看第几行的元素?请输入:");
int number=scan.nextInt();
for(int j=0;j<class_score[number-1].length;j++)
{
System.out.println("第"+number+"行的第["+j+"]个元素的值是:"+class_score[number-1][j]);
}
}
执行上述代码进行测试,输出结果如下所示。
当前数组只有4行,您想查看第几行的元素?请输入:
3
第3行的第[0]个元素的值是:100.0
第3行的第[1]个元素的值是:100.0
第3行的第[2]个元素的值是:99.5
!!!
以上呢就是所有获取二维数组中的元素的方法
要是铁铁们没有理解可以再去看一遍或者查阅资料;
或者简单点直接私信或者评论区问我铁铁们!
——————————————————————手动分割———————————————————
以上呢就是本期的所以知识点了!
(/dog 我终于写完这期了!)
铁铁们记得没事多看看哈!
温故而知新嘛!
最后看完记得关注哈!
日更中!
日更中!
日更中!
——————————————————————手动分割———————————————————
上面习题答案附上:
import java.util.Scanner;
public class pj{
public static void main(String[] args){
System.out.println("请输入几个数并用逗号隔开:");
Scanner sc = new Scanner(System.in);
String str = sc.next().toString();
String[] arr = str.split(",");
int[] num=new int[100];
int[] b = new int[arr.length];
double n=0;
int m=0;
int x;
for(int a=0;a<arr.length;a++){
//m=arr[a];
num[]=x;
m+=a;
}
//n=m/x;
System.out.println("平均数:"+m);
}
}
记得做完再看哈!
好啦,铁铁们明天见!