package javaday7;
public class Test {
/**
* 1.数组:数组中可以存放一系列数据类型相同的数据。
* 数组属于引用性的数据类型的变量。
* 数组的特性:1.数组中的数据类型必须一样
* 2.数组的长度必须要在创建的时候就定义好,并且不能修改。
*
* 1.声明数组:
* 语法: 数据类型 [] 数组名;(推荐)
* 或者 数据类型 数组名 [];
* 注意:数组声明完成以后不能直接使用,因为并没有给他分配相应的内存空间。
* 声明完成数组之后数组的初始值为null.
* 2.分配空间:
* 语法:1.数组名=new 数据类型[数组长度];
* 注意:中括号中必须要写长度。
* 2.数组名=new 数据类型[]{元素,元素,元素,.....};
* 注意:中括号中不能写数组长度。
* 使用场景:当数组中的元素数量不固定的时候一般使用第一种方式创建数组
* 当数组中的元素固定,并且数据量不是特别大的时候可以使用第二种。
* 注意:如果为数组分配好了内存空间,并没有用赋初值的时候,数组中会有默认值。
* int:默认为0
* double:默认为0.0
* 引用型:默认null
* 3.为数组赋值:
* 数组元素:数组中的每一个数据叫做一个数组元素。
* 数组下标:数组元素在数据中的位置叫做数组下标,数组下标从0开始。
* 数组长度:数组中元素的个数叫做数组长度。
* 获取方式:长度=数组名.length;
* 数组最大下标=数组长度-1;
* 为数组赋值:
* 数据类型 [] 数组名={元素,元素,元素,.....};
* 注意:数组的声明和赋值必须放在一起不能分开写。
* 单独赋值:必须通过数组的下标赋值
* 数组名[下标]=值;
*
* 4.访问数组中的元素:必须通过数组的下标进行访问。
* 语法:数据类型 值=数组名[下标];
* 注意:在使用数组的时候一定要注意,下标不能超过最大下标。
* 如果访问下标超过最大下标则报错:java.lang.ArrayIndexOutOfBoundsException
*
*/
public static void main(String[] args) {
//申明一个int类型的数组
int [] arr=null;
String arr2 [];
//分配空间
arr=new int[5];
//赋值
arr[0]=4;
arr[1]=5;
arr[4]=10;
int el=arr[2];
System.out.println(el);
arr2=new String[4]/* {"asdas","wqeqwe","dfgdfg"}*/;
System.out.println(arr2[0]);
//声明和分配空间
double [] arr3=new double[7];
//获取arr3数组的长度
int length=arr3.length;
System.out.println(length);
int arr4 [] = {1,3,5,2,6};
}
}
作业:
1:输入n个学生的成绩,然后将他们保存在数组中,并找出最大成绩和最小成绩,计算他们的平均成绩。
package Demo2;
import java.util.Scanner;
public class Demo1 { public static void main(String[] args) { double temp=0; double sum=0; int n=5; Scanner scanner=new Scanner(System.in); double [] a=new double[n]; for(int i=0;i<a.length;i++){
System.out.println("请输入第"+(i+1)+"个学生的成绩:"); double r=scanner.nextDouble(); a[i]=r; sum=sum+a[i];
} for(int j=0;j<a.length-1;j++){ for(int k=0;k<a.length-1-j;k++){ if(a[k]>a[k+1]){ temp= a[k]; a[k]=a[k+1]; a[k+1]=temp; } } } double max=a[a.length-1]; double min=a[0]; System.err.println("最好成绩为:"+max+"最低成绩为:"+min+"平均成绩为:"+(sum/a.length));
}
} |
2:有一个int数组arr1长度为5,将他的长度扩充为8.
提示:数组长度固定,不能再原来的数组上面扩展,要扩充必须创建一个新的数组,然后将原来数组中的元素复制到新的数组中。
|
- 给定一个数组arr1 = {1,6,3,9,10,45,100},要求利用程序实现数组的倒序,并且将数组输出出来。arr1倒序数组为arr2 = {100,45,10,9,3,6,1}
package Demo2;
public class Demo3 { public static void main(String[] args) { int [] arr1={1,6,3,9,10,45,100}; int [] arr2; arr2=new int[7];
for(int i=0;i<arr1.length;i++){ arr2[i]= arr1[6-i]; System.out.print(arr2[i]+" "); } }
} |
- 请输入一组数字,使用冒泡排序从大到小排列输出
package Demo2;
import java.util.Scanner;
public class Demo4 { public static void main(String[] args) { int [] a; a=new int[5]; Scanner scanner=new Scanner(System.in); for(int i = 0;i<a.length;i++){ System.out.print("请输入第"+(i+1)+"个数字:"); int r=scanner.nextInt(); a[i]=r; } for(int i=0;i<a.length-1;i++){ for(int j=0;j<a.length-1-i;j++){ int temp=0; if(a[j]<a[j+1]){ temp=a[j+1]; a[j+1]=a[j]; a[j]=temp; } } } for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } }
}
|
5.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
package Demo2;
public class Demo5 { public static void main(String[] args) { //int s1; double sum=0;
double [] a; a=new double[10];
for(int i=0;i<10;i++){ if(i==0||i==1){ a[i]=100; }else{ a[i]=a[i-1]/2;
} sum=sum+a[i]; }
System.err.println("第10次落地时,共经过"+sum+"米"); System.out.println("第10次反弹高"+a[9]/2+"米");
}
}
|
6.(选做题)
编写一个抽奖的程序
提示1.先定义一个数组保存所有抽奖人员的电话号码。
- 然后让用户输入抽奖等级,如果该等级的奖励已经抽完则提示用户。
(一等奖1名,二等奖2名,三等奖3名)
3.使用随机数生成下标,已经抽过的手机号不能重复中奖。
|