目录
使用数组的方法:1、声明数组,2、分配空间,3、赋值,4、处理数据
一、一维数组
数组定义
数组是一个变量,存储相同数据类型的一组数据
声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一串连续的空间
数组基本要素
标识符:数组的名称
数组元素:数组中存放的数据
元素下标:对数组元素进行编号,数组下标从0开始,数组中的每个元素都可以通过下表来访问
元素类型:数组元素的数据类型
注意:定义好数组长度后,数组长度固定不变,避免数组越界
使用数组的方法:1、声明数组,2、分配空间,3、赋值,4、处理数据
1、声明数组的方法:告诉计算机数组的数据类型是什么
1、数据类型 数组名[];
2、数据类型[] 数组名;
int[ ] score1; //Java成绩
int score2[ ]; //C#成绩
String[ ] name; //学生姓名
2、分配空间:告诉计算机分配几个连续的空间
语法:数组类型[] 数组名 = new 数据类型[大小];
int score[] = new int[30];
int avgAge[] = new int[6];
String name[]= new String[30];
3、赋值:向分配的格子里放数据
方法一:边声明边赋值
int[ ] scores = {89, 79, 76};
int[ ] scores = new int[ ]{89, 79, 76};
方法二:动态的从建盘录入信息并赋值
Scanner input = new Scanner(System.in);
for(int i = 0; i < 30; i ++){
score[i] = input.nextInt();
}
4、对数据进行处理:
例如:计算5为学生的平均分
int [ ] score = {60, 80, 90, 70, 85};
int sum = 0;
double avg;
for(int i = 0; i < score.length; i++){
sum = sum + score[i];
}
avg = sum / score.length;
数组的典型应用:添加元素:修改元素:删除元素
1、添加元素例如:
package com.day09;
/**
* @authorDesc
* @author
* @date 2022-07-14 16:11:49
* @version 1.0.0
* @description 添加新的图书
*/
public class Exercise5 {
/**
* @description 有一个存储图书名称的数组,数据如下:
* String[] books={“三国演义”,“红楼梦”, “史记” , null , “左传”,”菜根谭”};
* 在null的位置插入西游记
* @author
* @date 2022-07-14 16:11:59
* @param args
* @return
*/
public static void main(String[] args) {
int index = -1;//定义一个标记
String addArray[] = {"三国演义","红楼梦", "史记" , null , "左传","菜根谭"};//定义一个数组
for (int i = 0; i < addArray.length; i++) {//定义一个循环条件小于数组的循环
if (addArray[i] == null){//找到数组中的空值
index=i;//将空值赋值给index
break;//找到空值后结束循环
}
}
if (index > -1){//判断index的值
addArray[index]="西游记";//将西游记添加到数组中的空值
for (String add : addArray) {//定义一个循环条件小于数组的循环
System.out.println(add);//输出数组
}
}else {
System.out.println("数组已满");
}
}
}
2、修改元素例如:
package com.day09;
/**
* @authorDesc
* @author
* @date 2022-07-14 16:11:49
* @version 1.0.0
* @description 修改新的图书
*/
public class Exercise5 {
/**
* @description 有一个存储图书名称的数组,数据如下:
* String[] books={“三国演义”,“红楼梦”, “史记” , null , “左传”,”菜根谭”};
* 在null的位置插入西游记
* @author
* @date 2022-07-14 16:11:59
* @param args
* @return
*/
public static void main(String[] args) {
int index = -1;//定义一个标记
String addArray[] = {"三国演义","红楼梦", "史记" , "西游记" , "左传","菜根谭"};//定义一个数组
for (int i = 0; i < addArray.length; i++) {//定义一个循环条件小于数组的循环
if ("西游记".equals(addArray[i])){//找到数组中的空值
index=i;//将空值赋值给index
break;//找到空值后结束循环
}
}
if (index > -1){//判断index的值
addArray[index]="水浒传";//将西游记添加到数组中的空值
for (String add : addArray) {//定义一个循环条件小于数组的循环
System.out.println(add);//输出数组
}
}else {
System.out.println("数组已满");
}
}
}
3、删除元素例如:
package com.day09;
/**
* @authorDesc
* @author
* @date 2022-07-14 17:20:43
* @version 1.0.0
* @description
*/
public class Exercise6 {
/**
* @description 删除元素,将后面的元素依次往前推,将最后一位设置为null。
* @author
* @date 2022-07-14 17:20:54
* @param args
* @return
*/
public static void main(String[] args) {
int index = -1;//定义一个标记
String deleteArray[] = {"三国演义","红楼梦","史记","西游记","左传","菜根谭"};//定义一个数组
for (int i = 0; i < deleteArray.length; i++) {//定义一个循环条件小于数组的循环
if ("左传".equals(deleteArray[i])){//找到数组中的左传
index=i;//将左传赋值到index
}
}
for (int i=index;i<deleteArray.length-1;i++){//定义一个循环条件小于数组-1的循环
deleteArray[i] = deleteArray[i+1];//从空值开始,数组中的值,赋值到前一位
}
deleteArray[deleteArray.length-1]=null;//将数组最后以为赋为空值
for (String delete : deleteArray) {
System.out.println(delete);//输出数组
}
}
}
冒泡排序算法
重复地遍历要排序的元素,依次比较相邻两个元素,如果前一个比后一个大,就把它们两个调换位置,直到没有元素再需要交换,排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。
方法:
例如用二重循环将5个数字升序排序、5个数字如何存放
1、定义数组
2、控制比较多少轮
3、外层循环,循环变量 i
4、控制每轮比较多少次
5、内层循环,循环变量 j
6、交换数据
例如:
public static void main(String[] args) {
int numArray[] = {23,45,36,78,32};
for (int i = 0; i < numArray.length - 1; i++) {
for (int j = 0; j < numArray.length - i - 1; j++) {
if (numArray[j] > numArray[j+1]){
int temp = numArray[j];
numArray[j] = numArray[j+1];
numArray[j+1] = temp;
}
}
}
for (int num : numArray) {
System.out.println(num);
}
}
口诀:N个数字来排队,两两相比小靠前,外层循环N-1,内层循环N-1-i
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中的下标(要求数组中元素已经按升序排列) |
1、判断数组是否相等:
public static void main(String[] args) {
int [] arr1 ={12,23,45};
int [] arr2 ={23,56,43};
int [] arr3 ={22,36,46};
System.out.println(Arrays.equals(arr1,arr2));
System.out.println(Arrays.equals(arr2,arr3));
}
2、排序:由小到大
public class Class {
public static void main(String[] args) {
int array [] = {12,25,45,31,58,34,};
for (int i = 0; i < array.length; i++) {
Arrays.sort(array);
}
for (int i : array) {
System.out.println(i);
}
}
}
3、将数组转化为字符串
public static void main(String[] args) {
int [] array ={10,23,34,56};
Arrays.sort(array);
System.out.println(Arrays.toString(array));
}
4、将数组所有元素赋值为相同的值
public static void main(String[] args) {
int [] array ={10,23,34,56};
Arrays.fill(array,30);
System.out.println(Arrays.toString(array));
}
5、将数组复制成一个长度为设定值的新数组
public static void main(String[] args) {
int [] arr1 = {12,23,34,23,};
int [] arr2 = Arrays.copyOf(arr1,3);
System.out.println(Arrays.toString(arr2));
int [] arr3 = Arrays.copyOf(arr1,4);
System.out.println(Arrays.toString(arr3));
int [] arr4 = Arrays.copyOf(arr1,6);
System.out.println(Arrays.toString(arr4));
}
6、查询元素在数组中的下标
public static void main(String[] args) {
int arr[] = {12,34,53,45,};
Arrays.sort(arr);
int index = Arrays.binarySearch(arr,12);
System.out.println(index);
index = Arrays.binarySearch(arr,34);
System.out.println(index);
}
二、二维数组
命名:<数据类型> [ ][ ] 数组名; 或者 <数据类型> 数组名 [ ][ ];
例如:int [ ][ ] scores = new int[3][50];
int [ ][ ] array = new int[][]{{80,92},{78,89,98},{78,87,79}};
int [ ][ ] array = {{80,92},{78,89,98},{78,87,79}};
例如: 输出3个班级各自总分
public static void main(String[] args) {
int [][] array = new int[][]{{80,92},{78,89,98},{78,87,79}};
int sum =0;
for (int i = 0; i < array.length; i++) {
String str = (i+1) +"班";
for (int j = 0; j < array[i].length; j++) {
sum +=array[i][j];
}
System.out.println(str +"总成绩:"+sum);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97222.html