5.1数组

一.数组的特点
1.存储一组相同数据类型的数据
2.长度一旦声明就固定
3.每个元素的内存地址是连续的

二.数组的使用步骤
1.声明:数据类型[] 数组名; double[] nums;
2.创建数组:nums = new double[10];分配连续的内存空间。声明和创建可以写成一句代码
3.访问数组的元素:数组名[下标];下标是从0开始。 double[2] = 3.14;
4.数组名.length可以获取数组的物理长度

三.数组的声明和初始化的方式
1.int[] nums = {32,45,76,98,100};
2.int[] nums = new int[]{1,2,3,4,5,6,7};

四.数组的排序
import java.util.Arrays;

int[] nums = {12,43,55,8,123,90,78};
Arrays.sort(nums);//工具自动排序

五.例子

package com.demo1027;

import java.util.Arrays;
import java.util.Scanner;

public class Demo {
	//数组的声明和使用
//	public static void main(String[] args) {
//		int[] nums;//声明数组
//		nums = new int[5];
//		//使用数组 无非就是1.读取数组中的数据  2.往数组中写入数据
//		nums[1]=100;
//		System.out.println(nums[0]);
//		System.out.println("nums的长度为:"+nums.length);
//	}
	
	//练习1 要求给数组0-4的下标赋值   3.14   5   6.6   89   100.11
//	public static void main(String[] args) {
//		double[] nums = new double[5];
//		nums[0] = 3.14;
//		nums[1] = 5;
//		nums[2] = 6.6;
//		nums[3] = 89;
//		nums[4] = 100.11;
//		
//		System.out.println(nums[0]+nums[1]+nums[2]+nums[3]+nums[4]);
//	}
	
	//练习2声明一个double类型的数组 长度5
	//要求用循环来接受键盘输入的5个数字
	//求5个数的平均值?
//	public static void main(String[] args) {
//		Scanner sc = new Scanner(System.in);
//		double[] nums = new double[5];
//		for(int i=0;i<nums.length;i++){
//			System.out.println("请输入第"+(i+1)+"个数字:");
//			nums[i] = sc.nextDouble(); 
//		}
//		double sum = 0;
//		for (int i = 0; i < nums.length; i++) {
//			sum+=nums[i];
//		}
//		System.out.println("平均数是:"+sum/nums.length);
//	}
	
	//3.声明一个整型数组,将其初始化为以下数据:12,43,55,8,123,90,78
    //要求:a.用户随便输入一个数,告诉用户该数在不在数组中,如果在告诉用户在哪个位置上?
	//    b.求数组中最大值是多少?
//	public static void main(String[] args) {
//		int[] nums = {-12,-43,-55,-8,-123,-90,-78};
//		int max = nums[0];//擂台
//		Scanner sc = new Scanner(System.in);
//		System.out.println("输入一个数:");
//		int num = sc.nextInt();
//		for (int i = 0; i < nums.length; i++) {
//			if(num==nums[i]){
//				System.out.println("这个数在数组中第"+(i+1)+"位");
//				break;
//			}
//			
//			if(i==nums.length-1){
//				System.out.println("没有这个数");
//			}
//		}
//		
//		for (int i = 0; i < nums.length; i++) {
//			if(nums[i]>max){
//				max = nums[i];
//			}
//		}
//		System.out.println("数组中的最大值是:"+max);
//	}
	
	//4.插入算法

//数组的插入算法:初始化一个数组,数据位为:12,43,55,8,123,90,78
//要求用户输入一个数字,和插入的位置,将该数字插入到数组中,其他元素的位置保持原来的顺序

//	public static void main(String[] args) {
//		//1.声明并初始化原数组
//		int[] old = {12,43,55,8,123,90,78};
//		for (int i = 0; i < old.length; i++) {
//			System.out.print(old[i]+"  ");
//		}
//		//2.接受用户输入
//		Scanner sc = new Scanner(System.in);
//		System.out.println("请输入要插入的数字:");
//		int num = sc.nextInt();
//		System.out.println("请输入要插入的位置:");
//		int index = sc.nextInt();
//		//3.创建新数组,其长度为原数组长度加一
//		int[] newNums = new int[old.length+1];
//		//4.我们将原数组中的数据,对号入座到新数组中
//		for (int i = 0; i < old.length; i++) {
//			if(i<index-1){
//				newNums[i] = old[i];
//			}else{
//				newNums[i+1] = old[i];
//			}
//		}
//		//5。将用户输入的数字,对号入座到新数组中
//		newNums[index-1] = num;
//		//6.输出新数组中所有数据
//		for (int i = 0; i < newNums.length; i++) {
//			System.out.print(newNums[i]+"  ");
//		}
//	}
	
	//用java自带的工具给数组排序
	public static void main(String[] args) {
		int[] nums = {12,43,55,8,123,90,78};
		
		Arrays.sort(nums);//工具自动排序
		
		for (int i = 0; i < nums.length; i++) {
			System.out.print(nums[i]+"  ");
		}
	}
}

 

/**
 * 数组
 * 1.初始化一个整型数组,12,43,55,8,123,90,78  将其倒序排序输出;
 * 2:输出最低分要求:输入十个数,将最低分输出;
 * 3:输入十个数,将小于0的数变为0,排序输出这十个数
 * 
 */
package class1030;

import java.util.Arrays;
import java.util.Scanner;

public class Test01 {
	public static void main(String[] args){
		
		//1.初始化一个整型数组,12,43,55,8,123,90,78  将其倒序排序输出;
		/*
		int a[]={12,43,55,8,123,90,78};
		Arrays.sort(a);
		for(int i=a.length-1;i>=0;i--)
		{
			System.out.print(a[i]+" ");
		}
		*/
		
		//2:输出最低分要求:输入十个数,将最低分输出;
		/*
		double b[]=new double[10];
		double nums;
		Scanner sc=new Scanner(System.in);
		for(int i=0;i<b.length;i++)
		{
			System.out.println("请输入第"+(i+1)+"个数");
			b[i]=sc.nextDouble();
		}
		nums=b[0];
		for(int i=0;i<b.length;i++)
		{
			System.out.print(b[i]+" ");
			if(nums>b[i])
			{
				nums=b[i];
			}
		}
		System.out.println("最小的数是"+nums);
		*/
		
		//3:输入十个数将其排序,并将小于0的数变为0,输出
		/*
		int arr[]=new int[10];
		Scanner sc=new Scanner(System.in);
		for(int i=0;i<arr.length;i++)
		{
			System.out.println("请输入第"+(i+1)+"个数");
			arr[i]=sc.nextInt();
			if(arr[i]<0){
				arr[i]=0;
			}
		}
		Arrays.sort(arr);
		for(int j=0;j<arr.length;j++)
		{
			System.out.print(arr[j]+" ");
		}
		*/
		
		//4:{123,43,65,23,11,3,6,89}把这个数组排序,
		//然后用户随便输入一个数字,将该数字插入到数组,并且仍保持数组有序,
		//要求用插入算法
		
		int arr[]={123,43,65,23,11,3,6,89};
		Arrays.sort(arr);
		for(int i=0;i<arr.length;i++)
		{
			System.out.print(arr[i]+" ");
		}
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个数字");
		int num=sc.nextInt();
		int index=0;
		for(int i=0;i<arr.length;i++)
		{
			if(arr[i]>num)
			{
				index=i;
				break;
			}
		}
		int arr2[]=new int[arr.length+1];
		for(int i=0;i<arr.length;i++)
		{
			if(i<index)
			{
				arr2[i]=arr[i];
			}else{
				arr2[i+1]=arr[i];
			}
		}
		arr2[index]=num;
		for(int i=0;i<arr2.length;i++)
		{
			System.out.print(arr2[i]+" ");
		}
	}

}

  

 

 

posted @ 2019-02-05 21:31  五柳先生柳三变  阅读(236)  评论(0编辑  收藏  举报