一、创建数组的三种方式:
方式一:
int[] array1 = new int[]{1,2,3,4,5};
方式二:
int[] array2 = {1,2,3,4,5};
方式三:
int[] array3= new int[10];
二、数组的初始化(给上面创建数组的三种方式分类)
1.静态初始化:
声明数组时直接在内存中分配空间,并将值存入内存空间中
如上面的方式一、方式二
2.动态初始化:
初始化时指定数组的长度,内存空间中的数据由系统分配初始值
如上面的方式三
三、数组的使用
1.1 遍历数组
代码:
//用方式一静态初始化一个数组
int[] array1=new int[]{1,2,3,4,5,6};
//用for循环遍历数组
for(int i = 0;i<array1.length;i++){
//用下标访问数组
System.out.println(array1[i]);
}
结果:
1.2 得到输入不确定个数的不确定数值的数组
代码:
Scanner scan=new Scanner(System.in);
System.out.println("请确定数据个数:");
int length=scan.nextInt();
//用方法3动态化一个数组,长度为从输入台获取的长度
int array3[]=new int[length];
for(int i=0;i<length;i++){
System.out.println("请输入第"+(i+1)+"个数:");
array3[i]=scan.nextInt();
}
结果:
1.3.1 获得数组内的最大值
代码:
//用方式二静态化一个数组
int[] array2={9,40,6,9,8};
int max=0;
for(int i=0;i<array2.length;i++){
//打擂台,只要比max的值大,就可以换掉max的值
if(array2[i]>max){
max=array2[i];
}
}
System.out.println(max);
结果
1.3.1 获取数组内的最小值
代码:
//用方式二静态化一个数组
int[] array2={9,40,6,9,8};
int min=0;
for(int i=0;i<array2.length;i++){
if(array2[i]<min){
min=array2[i];
}
}
System.out.println(min);
}
结果:
- 咦~好像出现问题了
-出现什么问题了呢?
-这数组里就没有0,最小值怎么会是0呢?
-因为最小值初始化的值是0,数组中没有比0小的数字要替换掉0,就输出0了
-那怎么办呢?
-把最小值初始化的值,变成数组中的第一个数就可以咯
改正后:
// 用方式二静态化一个数组
int[] array2 = { 9, 40, 6, 9, 8 };
int min = array2[0];
for (int i = 0; i < array2.length; i++) {
if (array2[i] < min) {
min = array2[i];
}
}
System.out.println(min);
结果:
1.4.1 直角三角形(1)
样式:
分析(以四行为例):
外层行数由外层循环控制,外层循环循环一次,内层循环循环一圈。
一行的个数需控制内层循环来控制。
由图得,内行的个数与外行行数一直,即内层个数小于等于外行行数(或内层个数小于外行行数+1)
代码:
Scanner scan=new Scanner(System.in);
System.out.println("请输入想输入三角形的行数");
int length=scan.nextInt();
for(int i=1;i<=length;i++){
for(int j=1;j<=i;j++){
System.out.println("*");
}
}
结果:
-这似乎没有换行?
-所以,我们要加上换行。
-怎么加呢?
-想一想...是不是应该在内层循环的每一轮结束后加上换行
-那就是在外层循环里面,内层循环外面!
-BINGO!
当我们加了
//ln 自带换行
System.out.println();
代码变为:
Scanner scan=new Scanner(System.in);
System.out.println("请输入想输入三角形的行数");
int length=scan.nextInt();
for(int i=1;i<=length;i++){
for(int j=1;j<=i;j++){
System.out.println("*");
}
System.out.println();
}
结果:
-哎呀!
-怎么还是不对啊!
-别着急,让我们细细看来
- 内层循环似乎在每一圈得每一次都换了行,那么,为什么会换行呢?
-是ln!
当我们去掉ln后
代码:
Scanner scan=new Scanner(System.in);
System.out.println("请输入想输入三角形的行数");
int length=scan.nextInt();
for(int i=1;i<=length;i++){
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
结果:
1.4.2 直角三角形(2)
样式:
分析(以四行为例) :
那不就是内行从4开始,大于0,然后减减,外行从1开始,小于等于4,然后加加嘛!
代码:
Scanner scan=new Scanner(System.in);
System.out.println("请输入想输入三角形的行数");
int length=scan.nextInt();
for(int i=1;i<=length;i++){
for(int j=length;j>0;j--){
System.out.print("*");
}
System.out.println();
}
结果:
-为什么啊!
-因为内层得j每次都是从4开始,到1结束
-那应该让它和 i有关系,从length-i开始?
-试一试吧!
代码:
Scanner scan=new Scanner(System.in);
System.out.println("请输入想输入三角形的行数");
int length=scan.nextInt();
for(int i=1;i<=length;i++){
for(int j=length-i;j>0;j--){
System.out.print("*");
}
System.out.println();
}
结果:
-少了一行... ...找找... ...
-当length等于4得时候,j=0,0不大于0,停止运行,所以,应该让j>=0
-对咯!
代码:
Scanner scan=new Scanner(System.in);
System.out.println("请输入想输入三角形的行数");
int length=scan.nextInt();
for(int i=1;i<=length;i++){
for(int j=length-i;j>=0;j--){
System.out.print("*");
}
System.out.println();
}