数组的应用
一、什么数组?
示例:数组是用来存放相同类型的数据的一类集合
二、储存空间(栈空间和堆空间)
三、代码以及效果图
1.利用数组来求最大值和最小值
案例:从键盘接受10个整数,求出其中的最大值和最小值。
代码如下(示例):
import java.util.Scanner;
public class Work1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入十个数字:");
int[] arr =new int[10];
for (int a = 0; a <arr.length ; a++) {
arr[a]=sc.nextInt();
}
int max=arr[0];
int min=arr[0];
for (int i = 1; i <arr.length ; i++) {
if (max<=arr[i]){
max=arr[i];
}
}
for (int j = 1; j <arr.length ; j++) {
if (min>=arr[j]){
min=arr[j];
}
}
System.out.println("最大值为:"+max);
System.out.println("最小值为:"+min);
}
}
2.数组中元素的查找
案例:输入10个数,保存在一个数组中,在数组中查找某个数字,给出是否找到信息,如果找到了输出该数在数组中所处的位置,如果找不到输出“找不到”
代码如下(示例):
import java.util.Scanner;
public class Work2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入10个数:");
int[] arr=new int[10];
for (int i = 0; i <arr.length ; i++) {
arr[i]=sc.nextInt();
}
System.out.println("请输入你想查找的数:");
int number = sc.nextInt();
boolean isnumber=false;
for (int j = 0; j <arr.length ; j++) {
if (arr[j]==number){
System.out.println("该数处于数组中第"+(j+1)+"个位置");
isnumber=true;
}
}
if (isnumber==false){
System.out.println("找不到");
}
}
}
3.数组中数据的输入存放
案例:输入10个数据存放到数组中,并输出数组
代码如下(示例):
import java.util.Arrays;
import java.util.Scanner;
public class Work2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入10个数:");
int[] arr=new int[10];
for (int i = 0; i <arr.length ; i++) {
arr[i]=sc.nextInt();
}
System.out.println(Arrays.toString(arr));
4.数组中根据输入数据大小输出存放下标的位置
案例:定义一个有序数列{1,5,20,30,80},要求用户输入一个数字,判断该数字应该插入到数组中的下标是?
代码如下(示例):
import java.util.Scanner;
public class Work7 {
public static void main(String[] args) {
int[] arr={
1,5,20,30,80};
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字:");
int number = sc.nextInt();
//找到第一个比number大的数
for (int i = 0; i< arr.length; i++) {
if (arr[i]>number){
System.out.println("该数应该插入的下标是:"+i);
break;
}
}
}
}
5.数组中元素指定位置往后覆盖
案例:定义一个长度为8的数组,要求前7个元素赋值,最后一个不赋值,从第5个元素开始,依次覆盖后面的元素,并输出最终结果。
代码如下(示例):
package work1;
import java.util.Scanner;
public class Work8 {
public static void main(String[] args) {
fun1();
fun();
}
//方法1
private static void fun1() {
int [] arr={
10,20,30,40,50,60,70,0};
// i 第五个元素的下标为4 最后一个数的下标为len-1 len-2赋值给len-1 len3赋值给len-2 下标4赋值给下标5
for (int i = arr.length-2; i >= 4; i--) {
arr[i+1]=arr[i];
}
//输出数组
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]+" ");
}
}
//方法2
private static void fun() {
int[] arr=new int[8];
Scanner sc = new Scanner(System.in);
System.out.println("请输入七个数值:");
for (int i = 0; i <arr.length-1 ; i++) {
arr[i]=sc.nextInt();
}
for (int j = arr.length-1; j >=5 ; j--) {
arr[j]=arr[j-1];
}
for (int a:arr){
System.out.print(a+"\t");
}
}
}
6.数组中在指定位置插入指定值
代码如下(示例):
package work1;
import java.util.Arrays;
import java.util.Scanner;
//.定义一个有序数列,{1,5,20,30,80},
// 要求用户输入一个数字,然后插到数组中,并保持升序,不能使用冒泡排序。
public class Work9 {
public static void main(String[] args) {
fun2();
fun();
}
//方法一:
private static void fun2() {
int [] arr={
10,20,30,40,50,60,70,0};
int x=50;//插入的数字值
//1.找到应该插入的下标index;
int index=arr.length-1;//默认值就是最后一个,找第一个比x大的下标
for (int i = 0; i < arr.length; i++) {
if (arr[i]>x){
index=i;
break;
}
}
System.out.println(index);
//2.从index开始,依次向后移位
for (int i = arr.length-2; i >=index ; i--) {
arr[i+1]=arr[i];
}
//3.用x替换arr[index]
arr[index]=x;
//输出数组
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
//方法2
private static void fun() {
int[] arr={
1,5,20,30,80};
int[] arr1=new int[6];
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要插入的数字:");
int number = sc.nextInt();
for (int i = 0; i <arr.length ; i++) {
arr1[i]=arr[i];
}
int xia=arr1.length-1;
for (int a = arr.length-1; a >=0 ; a--) {
if (arr[a]>number){
xia=a;
}
}
for (int b = xia; b <arr.length ; b++) {
arr1[b+1]=arr[b];
}
arr1[xia]=number;
arr=arr1;
System.out.println(Arrays.toString(arr));
}
}
7.数组中数组元素的逆向输出
案例:3.将一个数组中的元素逆序输出,即第一个元素和最后一个元素交换,第二个数与倒数第二元素交换……,例如:原数组为:9 2 5 7 8,逆序后的数组为:8 7 5 2 9
代码如下(示例):
package work1;
import java.util.Scanner;
public class Work3 {
public static void main(String[] args) {
int[] arr=new int[5];
Scanner sc = new Scanner(System.in);
System.out.println("请输入5个数组成原数组:");
for (int i = 0; i <arr.length ; i++) {
arr[i]=sc.nextInt();
}
int a=0;
for (int j = 0; j <arr.length/2; j++) {
a=arr[j];
arr[j]=arr[4-j];
arr[4-j]=a;
}
System.out.println("逆序后的新数组为:");
for (int b:arr){
System.out.print(b+"\t");
}
}
}
总结
以上就是数组应用方面的内容,主要是数组的最大值、最小值、指定位置插入元素、元素的往后覆盖等知识。