数组是一个变量,存储相同数据类型的一组数据(就是能存储很多数值的数据类型)
如果说声明一个变量就是在内存空间划出一块合适的空间,那么声明一个数组就是在内存空间划出一串连续的空间。
数组的基本要求
- 标识符:数组的名称,用于区分不同的数组
- 数组元素:数组中存放的数据
- 元素下标:从0开始
- 元素类型:数组的数据类型
数组操作的基本步骤
1)声明数组:告诉计算机数据类型是什么
数据类型[ ] 数组名; 如:int[ ] score1;
数据类型 数组名[ ]; 如:int score2[ ];
注意:声明数组时不能声明数组的长度
2) 分配空间:告诉计算机分配几个连续的空间
如:score=new int[30];
数据类型[ ] 数组名 = new 数据类型[大小];
3)赋值
边声明变赋值
Int [ ] score=new int[ ]{89,79,69}; 前面写个3后面附3个数值,冲突了,计算机不允许
Int[ ] score={89,69,79}
也可以使用控制台输入赋值
Scanner input =new Scanner(System.in);
for(int i=0; i<30; i++){
score[i]=input.nextInt();
}
常见应用:
/*
* 定义一个数组序列
* 循环输出数列的值
* 求数列中所有数值的和
* 猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
*/
public class Test01 {
public static void main (String args[]){
int[] arr;
arr=new int[]{8,4,2,1,23,34,12};
int sum=0;
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
sum=sum+arr[i];
}
System.out.println("该数组数列的总和为:"+sum);
Scanner input=new Scanner(System.in);
System.out.println("请输入一个数字:");
int j=input.nextInt();
int k=0;
for(int i=0;i<arr.length;i++){
if(j==arr[i]){
k=1;
break;
}
}
if(k==1){
System.out.println("包含");
}else {
System.out.println("不包含");
}
}
}
/* 类说明 * 录入5位学员的成绩,进行升序后输出 */ public class Test02 { public static void main(String[] args) { int [] score=new int[5]; int k=0; Scanner inputScanner=new Scanner(System.in); System.out.println("请输入成绩:"); //for循环将数值存入数组 for(int i=0;i<score.length;i++){ score[i]=inputScanner.nextInt(); } //for循环输出数组序列 System.out.println("排序之前:"); for(int j=0;j<score.length;j++){ System.out.print(score[j]+" "); } System.out.println(" "); //进行排序操作 //使用java.util.Arrays类,调用Arrays类的sort()方法:对数组进行升序 Arrays.sort(数组名) Arrays.sort(score); System.out.println("排序之后:"); for(int i=0;i<score.length;i++){ System.out.print(score[i]+" "); } } }
若要输出数组的最大值,利用以上排序后,增加一句:System.out.println("最大值:"+score[score.length-1]);
冒泡排序:重复地走访过要排序的数列,一次比较相邻两个元素,如果他们的顺序错误就把他们交换过来
public class Test06 {
public static void main(String[] args){
int arr[]=new int[]{5,9,1,6,8};
int k=0;
for (int i = 0; i < arr.length-1; i++) { //使用双循环
for (int j = 0; j <arr.length-i-1; j++) {
if(arr[j]<arr[j+1]){ //此案例中为降序排列,若要为升序,则修改arr[j]>arr[j+1]
k=arr[j];
arr[j]=arr[j+1];
arr[j+1]=k;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}
嵌套循环
一个外循环里面嵌套内循环,外循环执行一次,内循环遍历一遍
public class Test04 { public static void main(String[] args) { /* * 外层控制行数 * 内层控制星号的个数 */ for (int i = 1; i <=5; i++) { for(int j=1;j<=i;j++){ System.out.print("*"); } System.out.println(); } } }
public class Test04 { public static void main(String[] args) { /* * 外层控制行数 * 内层控制星号的个数 */ for (int i = 5; i >=1; i--) { for(int j=1;j<=i;j++){ System.out.print("*"); } System.out.println(); } } }
public class Test04 {
public static void main(String[] args) {
for (int i =1; i <=5; i++) {
for(int j=5; j>=i; j--){
System.out.print(" ");
}
for(int j=1;j<=i*2-1;j++){
System.out.print("*");
}
System.out.println();
}
}
}
打印九九乘法表
public class Test05 {
public static void main(String[] args) {
for (int i = 1; i <=9; i++) {
for (int j = 1; j <=i; j++) {
System.out.print(j+"x"+i+"="+(i*j)+" ");
}
System.out.println();
}
}
}
public class Test012 { public static void main (String args[]){ /* 已知数列:0,1,1,2,3,5,8,13,21... 循环输出该数列---斐波那契数列 *分析思路:前两个数值固定,第三个数值等于它前两个数值之和,第四个数值等于它前两个数值之和... * **/ int[] nums=new int[15]; nums[0]=0; nums[1]=1; for(int i=2;i<nums.length;i++){ nums[i]=nums[i-1]+nums[i-2]; } //输出数组从新写一个for循环 for(int i=0;i<nums.length;i++){ System.out.print(nums[i]+","); } //数组平均值 int sum =0; double avg=0.00; for (int i = 0; i < nums.length; i++) { sum=sum+nums[i]; } avg=sum/15; System.out.println("平均值:"+avg); } }