第四章 数组
<一>数组的定义
是具有相同数据类型的一组数据的集合。
<二>数组的创建
一维数组
1、 数据类型 [] 数组名 = new 数据类型[大小];
(1) int [] ages = new int [10]; //两种一样
(2) int [] ages; //为分配空间
ages = new int[10]; //分配空间
2、数据类型 [] 数组名=new 数据类型[]{值1,值2,…值n};
int [] arrays= new int [5]{1,2,5,8,6};
3、数据类型 [] 数组名={值1,值2,…值n};
int [] arrays = {1,2,5,8,6};
多维数组(二维数组)
(1)int [][]array=new int[3][6];
int [][]array={{1,2},{3,4},{5,6}};
(2)使用循环遍历多维数组:几维数组就需要几层循环的嵌套
<三>数组的常见错误
- ArrayIndexOutOfBoundsException:数组越界异常
- 数组的定义方式的3种类型。
<四>数组的基本操作 - 数组的遍历与录入
import java.util.Scanner;
public class Array1{
public static void main(String []args){
Scanner sc = new Scanner(System.in); //键盘录入
int [] a=new int[5]; //定义数组
System.out.println("输入数组元素");
for(int j=0;j<a.length;j++){ // 键盘录入数组元素
a[j] = sc.nextInt();
}
for(int i=0;i<a.length;i++){ //遍历数组元素
System.out.print(a[i]);
}
}
}
程序运行结果:
- 找数算法:定义一个数组,输入一个值,在数组中找是否存在该元素。
import java.util.Scanner;
class Search{
public static void main(String []args){
int [] array = {1,5,8,9,70,56,87};
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数");
int a = sc.nextInt();
boolean flag = false;
for(int i=0;i<array.length;i++){
if(array[i]==a){
flag=true;
break;
}
}
if(flag){
System.out.println("存在!");
}else
System.out.println("不存在!");
}
}
程序运行结果:
3. 擂台算法(求最值)
import java.util.Scanner;
class Pk{
public static void main(String []args){
Scanner sc = new Scanner(System.in);
int []array = new int [5];
System.out.println("请输入5个数");
for(int i=0;i<array.length;i++){
array[i] = sc.nextInt();
}
int max=array[0],min=array[0];
for(int j=1;j<array.length;j++){
if(array[j]>max){
max=array[j];
}
if(array[j]<min){
min=array[j];
}
}
System.out.print("最大值为: "+max+" 最小值为:"+min+"");
}
}
程序运行结果:
4.排序算法
冒泡排序(降序/升序):
class Sort{
public static void main(String []args){
int []array ={5,98,56,1,55};
int temp=0;
for(int i=0;i<array.length;i++){
for(int j=0;j<array.length-i-1;j++){
//这是升序“》” 降序“《”
if(array[j]>array[j+1]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(array));
}
}
程序运行结果:
插入排序:给一个有序的数组中插入一个数,使其仍然保持有序。
a,定义一个有预留位置的数组
b,找插入位置
c,移位操作
import java.util.*;
class Insert {
public static void main(String[] args) {
int[]array=new int[5];
Scanner sc = new Scanner(System.in);
System.out.println("请输入4个从小到大的数:");
//输入值
for(int i=0;i<array.length-1;i++){
array[i] = sc.nextInt();
}
//遍历值
System.out.print("插入前:");
for(int j=0;j<array.length-1;j++){
System.out.print(array[j]+" ");
}
System.out.println("请输入要插入的数:");
int num=sc.nextInt();
int i;
//找位置
for(i=0;i<4;i++){
if(num<array[i]){
break;
}
}
//移位操作
for(int j=4;j>i;j--){
array[j]=array[j-1];
}
//插入
array[i]=num;
System.out.println("插入后:"+Arrays.toString(array));
System.out.println("请输入你要删除的位置:");
int index=sc.nextInt();
delete(index,array); //调用delete方法
//遍历删除后的值
System.out.print("删除之后数组为:");
for(int j=0;j<array.length-1;j++){
System.out.print(array[j]+" ");
}
}
// 删除方法
public static int[] delete(int index,int array[]){
for(int i = index;i<array.length;i++){
if(i!=array.length-1){
array[i]=array[i+1];
}else
array[i]=array[i];
}
return array;
}
}
程序运行结果:
<五>数组的工具类:Arrays
(1)快速查看数组的内容:Arrays.toString(数组);
(2)排序:Arrays.sort(数组); -------- 升序
备注
java中main方法的args数组的作用:接受用户的输入
java 类 值1 值2 值3 …值n
args大小是动态分配的:n