声明数组是为了在更多的数据时减少数据处理的数量。其中声明一个变量就是在内存空间划出一块合适的空间,声明一个数组就是在内存空间划出一串连续的空间。
数组的基本要素:
标识符:数组的名称
数组元素:数组中存放的数据
元素下标:对数组元素进行编号,数组下标从0开始,数组中的每个元素都可以通过下标来访问
元素类型:数组元素的数据类型 。规范数组名称的后缀必须加Array。
使用数组四步走:
声明数组
分配空间
赋值
处理数据
基本语法:
数据类型[ ] 数组名 = new 数据类型[大小] ;
赋值:
1.边声明边赋值:int[ ] scores = {89, 79, 76};
2.动态的从键盘录入信息并赋值:
Scanner input = new Scanner(System.in);
for(int i = 0; i < 30; i ++){
score[i] = input.nextInt();
}
练习(1)
购物金额结算,某会员本月购物五次,输入五笔购买金额,以表格的形式输出这五笔购物金额及总金额。运行效果如图:
package cn.higher;
import java.util.Scanner;
public class Close {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入会员本月的消费记录");
//定义一个数组,数组中有5个元素
double[] payArray = new double[5];
//定义i初始值为0,小于数组内元素的个数,并且自增
for (int i = 0;i < payArray.length;i++){
System.out.println("请输入第" + (i + 1) + "笔购物金额:");
//直接在数组中输入5个元素
payArray[i] = sc.nextDouble();
}
System.out.println("序号tttt金额(元)");
//定义一个总金额,初始值为0
double sum = 0;
for (int j = 0;j < payArray.length;j++){
System.out.println((j + 1) + "tttt" + payArray[j]);
//将所有金额都加为总金额sum
sum += payArray[j];
}
System.out.println("总金额:" + sum);
}
}
运行成功
循环数组(比大小或者求和之类的)
练习(2)
猜数游戏,有一个数列:8,4,2,1,23,344,12
功能1:循环输出数列的值
功能2:求数列中所有数值的和
package cn.higher;
import java.util.Scanner;
public class Guess {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] numArray = {8,4,2,1,23,344,12};
int sum = 0;//定义和
for (int i = 0;i < numArray.length;i++){
System.out.println(numArray[i]);
sum += numArray[i];
}
System.out.println("和:" + sum);
}
}
运行成功
练习(3)
求手机最低价格,张浩想买一部手机,他询问了四家店的价格,分别是3000元、3150元、2900元和2950元,请编程求出最低价格
package cn.higher;
import java.util.Scanner;
public class Phone {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//定义一个数组,元素个数为4
int [] moneyArray = new int[4];
System.out.println("请输入4家店的价格");
//定义i初始值为0,小于数组内元素的个数,并且自增
for (int i = 0;i < moneyArray.length;i++){
System.out.println("第" + (i + 1) + "家店的价格:");
//在数组内输入价格
moneyArray[i] = sc.nextInt();
}
//将数组内第一个元素定位最小值
int little = moneyArray[0];
for (int j = 0;j < moneyArray.length;j++){
//将每一个元素和第一个元素比较
if (moneyArray[j] < little){
//将得到的值赋值给little
little = moneyArray[j];
}
}
System.out.println("最低金额是:" + little);
}
}
运行成功
数组的添加,修改,删除:(重要的是下标的寻找)
练习(4)
添加元素
添加新的图书有一个存储图书名称的数组,数据如下:
String[] books={“三国演义”,“红楼梦”, “史记” , null , “左传”,”菜根谭”};在null的位置插入西游记。
package cn.higher;
public class Addition {
public static void main(String[] args) {
//定义一个数组
String[] booksArray = {"三国演义","红楼梦","史记",null,"左传","菜根谭"};
//定义一个变量index,用来接收"null"元素
int index = -1;
//定义i初始值为0,小于数组内元素的个数,并且自增
for (int i = 0;i < booksArray.length;i++){
//当循环到"null"时
if (booksArray[i] == null){
//将"null"通过i赋值给变量index
index = i;
//改变变量的值
booksArray[index] = "西游记";
}
}
for (String shop : booksArray) {
System.out.println(shop);
}
}
}
运行成功
删除元素
删除图书名称有一个存储图书名称的数组,数据如下:
String[] books={“三国演义”,“红楼梦”, “史记” , “西游记”, “左传”,”菜根谭”};删除“左传”这个元素,将后面的元素依次往前推,将最后一位设置为null。
package cn.higher;
public class Delete {
public static void main(String[] args) {
//定义一个数组
String[] booksArray = {"三国演义","红楼梦","史记","西游记","左传","菜根谭"};
//定义一个变量index
int index = -1;
//定义i初始值为0,小于数组内元素的个数,并且自增
for (int i = 0;i < booksArray.length;i++){
//当循环到元素"左传"时
if ("左传".equals(booksArray[i])){
//将"null"通过i赋值给"左传"
booksArray[i] = null;
//使用变量index定位变化的元素位置
index = i;
break;
}
}
//从定位开始向后循环
for (int i = index;i < booksArray.length - 1;i++){
//将后一个元素赋值给前一个元素
booksArray[i] = booksArray[i + 1];
}
//将"null"赋值给此数组内的最后一个元素
booksArray[booksArray.length - 1] = null;
for (String shop : booksArray) {
System.out.println(shop);
}
}
}
运行成功
修改就是替换相同下标的元素。(不在练习)
2.二维数组冒泡排序:重复地遍历要排序的元素,依次比较相邻两个元素,如果前一个比后一个大,就把它们两个调换位置,直到没有元素再需要交换,排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。
速记口诀:
N 个数字来排队
两两相比小靠前
外层循环 N-1
内层循环 N-1-i
二维数组基本语法:
<数据类型> [ ][ ] 数组名; 或者 <数据类型> 数组名 [ ][ ];
例:int [ ][ ] scores; //定义二维数组
scores=new int[3][5]; //分配内存空间
或者
int [ ][ ] scores = new int[3][5];
Arrays类常用方法
| 方法名称 | 说明 |
| boolean equals(array1,array2) | 比较array1和array2两个数组是否相等 |
| sort(array) | 对数组array的元素进行升序排列 |
| String toString(array) | 将一个数组array转换成一个字符串 |
| void fill(array,val) | 把数组array所有元素都赋值为val |
| copyof(array,length) | 把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致 |
| int binarySearch(array, val) | 查询元素值val在数组array中的下标(要求数组中元素已经按升序排列) |
练习(5)
冒泡排序:使用冒泡排序对输入的5名学员成绩进行降序排列
package cn.blue;
import java.util.Scanner;
public class Bubbling {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[5];
for(int i = 0;i < arr.length;i++){
System.out.println("请输入第" + (i + 1) + "个数字:");
arr[i] = sc.nextInt();
}
for(int j = 0;j < arr.length;j++){
for(int k = j;k < arr.length;k++){
if(arr[j] > arr[k]){
int bigger = arr[j];
arr[j] = arr[k];
arr[k] = bigger;
}
}
}
System.out.println("您输入的数字从小到大的排序为:");
for(int i = 0;i < arr.length;i++){
System.out.print(arr[i] + ",");
}
}
}
运行成功
个人问题冒泡排序理解起来较为费劲。(听说冒泡排序面试必问)



