JAVA范例 五)数组---一维数组

一维数组

实例55  一维数组的创建与使用

import java.util.Random;

public class OneArray_01 {
	public static void main(String[] args) {
		Random rd = new Random();				// 创建Random对象
		int array[] = new int[10];					// 创建一个长度为10的int型数组array
		System.out.println("  \narray数组中的每个元素值如下:\n");
		for (int i = 0; i < array.length; i++) {			// 给数组中的每个元素赋值
			array[i] = rd.nextInt(10);				// 生成0~10之间的随机数
			System.out.print("  " + array[i] + " ");		// 将数组中的元素输出
			if ((i + 1) % 5 == 0)					// 每5个元素一行
				System.out.println();
		}
	}
}

 

实例56  按相反的顺序输出

public class OneArray_02 {
	public static void main(String[] args) {
		int[] row = { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 };
		System.out.println("\n入场顺序如下:");
		for (int i = 0; i < row.length; i++) {
			System.out.print("   第七排" + row[i] + "号");
			if ((i + 1) % 5 == 0)
				System.out.println();
		}
		System.out.println("\n出场顺序如下:");
		for (int i = row.length - 1; i >= 0; i--) {
			System.out.print("   第七排" + row[i] + "号");
			if (i % 5 == 0)
				System.out.println();
		}
	}
}

 

实例57  奇偶分组

import java.util.Random;

public class OneArray_03 {
	public static void main(String[] args) {
		Random rd = new Random();		// 创建Random对象
		int total[] = new int[30];			// 创建一个长度为30的int型数组total(总数组)
		int odd[] = new int[30];			// 创建一个长度为30的int型数组odd(奇数数组)
		int even[] = new int[30];			// 创建一个长度为30的int型数组even(偶数数组)
		int j = 0, k = 0;
		System.out.println("总数组total的元素如下:");
		for (int i = 0; i < total.length; i++) {
			total[i] = rd.nextInt(100);		// 为total数组赋初值
			if (total[i] % 2 == 0) {			// 判断当前数组中的元素是否为偶数
				even[k] = total[i];
				k++;
			} else {
				odd[j] = total[i];
				j++;
			}
			System.out.print(" " + total[i]);
			if ((i + 1) % 5 == 0)			// 每5个元素一行
				System.out.println();
		}
		System.out.println("\n奇偶相交替输出:");
		int max = j > k ? j : k;				// 求j和k两者间的最大值
		int min = j > k ? k : j;				// 求j和k两者间的最小值
		/* 下面是将奇数和偶数交替输出,并只将多出的奇数或偶数输出 */
		for (int x = 0; x < max; x++) {
			if (x >= min && j == min) {			// 当x大于求出的最小值时,如果这个最小值等于奇数的个数,则输出多出的偶数
				System.out.print("  " + even[x]);
			} else if (x >= min && k == min) {	// 当x大于求出的最小值时,如果这个最小值等于偶数的个数,则输出多出的奇数
				System.out.print("  " + odd[x]);
			} else if (x < min) {				// 交替着输出奇数和偶数
				System.out.print("  " + odd[x] + "," + even[x]);
			}
			if ((x + 1) % 5 == 0)				// 每5个元素一行
				System.out.println();
		}
	}
}

 

实例58  找宝

import java.util.Random;

public class OneArray_04 {
	public static void main(String[] args) {
		Random rd = new Random();			// 创建Random对象
		int len = rd.nextInt(20);				// 百宝箱中珠宝的个数
		int[] box = new int[len];				// 定义一个百宝箱(数组)
		System.out.println("百宝箱中共有" + len + "个珠宝,其所有的编号如下:");
		for (int i = 0; i < box.length; i++) {
			box[i] = rd.nextInt(20);			// 给数组元素赋值
			System.out.print(box[i] + "  ");
			if ((i + 1) % 5 == 0)
				System.out.println();
		}
		System.out.println();
		int index = searchBotey(box, 8);		// 调用searchBotey方法
		if (index == -1) {
			System.out.print("此类宝石没有在该百宝箱中");
		} else {
			System.out.print("此类宝石百宝箱中的第" + (index + 1) + "格子中");
		}
	}
	public static int searchBotey(int[] box, int index) {// 其中box指的是数组参数,index指的是要查找的元素值
		int num = -1;
		for (int i = 0; i < box.length; i++) {
			if (index == box[i]) {
				num = i;
			}
		}
		return num;
	}
}

 

实例59  寻找最小数

public class OneArray_05 {
	public static void main(String[] args) {
		int array[] = { 12, 89, 51, 24, 5, 121, 63, 10, 23, 15 };		//定义一个带有初始值的整型数组array
		int min = 0;
		int flag = 0;
		System.out.println("交换前数组元素如下:");
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i] + " ");
			if ((i + 1) % 5 == 0)
				System.out.println();
		}
		for (int i = 0; i < array.length; i++) {		// 查找最小数
			if (i == 0) {						// 如果第一次循环,将数组中的第一个元素赋给变量min
				min = array[0];
				flag = 0;
			} else {
	// 将变量min与其它的数组元素相比较,如果min的值大于其他数组元素,则将数组元素的值赋给min
				if (min > array[i]) {			
					min = array[i];
					flag = i;
				}
			}
		}
		// 最小值与最后的元素进行交换
		int n = array[flag];
		array[flag] = array[array.length - 1];
		array[array.length - 1] = n;
		System.out.println("\n交换后数组元素如下:");
		for (int i = 0; i < array.length; i++) {	// 输出交换后数组
			System.out.print(array[i] + " ");
			if ((i + 1) % 5 == 0)
				System.out.println();
		}
		System.out.println("\n数组中的最小值为:" + min + " 它的下标为 " + flag);
	}
}

 

实例60  我的位置在哪里

public class OneArray_06 {
	public static void main(String[] args) {
		int[] person = getLocation();
		System.out.println("最后的结果如下:(其中,0表示已经离开圈子了,1表示还在圈中)");
		for (int i = 0; i < person.length; i++) {
			System.out.print(person[i] + " ");
			if ((i + 1) % 5 == 0)
				System.out.println();
	// 寻找哪个人的状态为1,则此人就是一直没有出圈的人,获取此元素的下标,就是此人原来位置的编号
			if (person[i] == 1) {
				System.out.println("这个人的原来位置编号为:" + i);
			}
		}
	}
	public static int[] getLocation() {
		int person[] = new int[17];				// 创建一个由17个人组成的圈子
		for (int i = 0; i < person.length; i++) {		// 设置每个人都在圈内的状态为1
			person[i] = 1;
		}
		int i = 0;							// 表示第几个人
		int k = 0;							// 表示报数
		int count = 0;						// 表示出圈的人数
		while (true) {
			i = i % 17;						// 为了确保i的值永远在0~16之间
			if (person[i] == 1) {				// 如果此人还在圈中则报数
				k++;						// 报数加1
				if (k % 3 == 0) {				// 如果报的数是3的倍数
					person[i] = 0;			// 此人的状态改为0,表示此人已经离圈
					count++;				// 离圈的人自动加1
				}
			}
			if (count == 16) {				// 如果已经有16个人离圈,则结束报数
				break;
			}
			i++;
		}
		return person;
	}
}

 

实例61  复制数组

public class OneArray_07 {
	public static void main(String[] args) {
		copy();
	}
	public static void copy() { 								// 数组复制
		int copy1[] = new int[] { 23, 12, 67, 89, 56, 47, 13 }; 		// 声明数组并初始化
		// 声明数组长度与copy1数组的长度相同的数组,也就是备份数组
		int copy2[] = new int[copy1.length]; 
		System.out.println("数组copy1中的元素如下:");
		for (int i = 0; i < copy1.length; i++) {					// 循环显示copy1数组元素
			System.out.print(copy1[i] + "  ");
			if ((i + 1) % 4 == 0)
				System.out.println();
		}
		System.arraycopy(copy1, 0, copy2, 0, copy1.length); 	// 将数组copy1复制给数组copy2
		System.out.println("\n复制的新数组copy2中的元素如下:");
		for (int i = 0; i < copy2.length; i++) {					// 循环显示copy2数组元素
			System.out.print(copy2[i] + "  ");
			if ((i + 1) % 4 == 0)
				System.out.println();
		}
	}
}

 

实例62  插入新元素

import java.util.Scanner;

public class OneArray_08 {
	public static void main(String[] args) {
		insertArray ();
	}
	public static void insertArray () {
		int i, j;
		int n = 5;
		int insertNum[] = new int[n + 1];				// 定义一个数组
		for (i = 0; i < insertNum.length - 1; i++) {
			insertNum[i] = i + (1 + 2 * i);			// 按从小到大的顺序给数组元素赋值
		}
		int length = insertNum.length; 				// 获得数组长度
		System.out.println("插入数字之前的数组为:");
		for (i = 0; i < length; i++)					// 循环显示数组元素
			if (insertNum[i] == 0)
				System.out.print("");
			else
				System.out.print(insertNum[i] + "  ");
		System.out.println();
		System.out.println("请输入一个数字:");
		Scanner scan = new Scanner(System.in);		// 键盘输入一个数
		int in = scan.nextInt();
		for (i = 0; i < length - 1; i++) { 				// 循环查找要插入新数的位置
			if (insertNum[i] > in)
				break;
		}
		for (j = length - 1; j > i; j--) {				// 移动元素,为新数空出位置
			insertNum[j] = insertNum[j - 1];
		}
		insertNum[i] = in; 						// 将要插入的数保存到该位置
		System.out.println("\n将" + in + "插入insertNum数组后,该数组的元素为:");
		for (i = 0; i < length; i++)					// 循环显示数组元素
			System.out.print(insertNum[i] + "  ");
		System.out.println();
	}
}

 

实例63  数组的合并

public class OneArray_09 {
	public static void main(String[] args) {
		int a[] = {1,3,5,7,9};
		int b[] = {0,2,4,6,8};
		int c[] = combineArray (a,b);
		System.out.println("合并之后的新数组c的元素如下:");
		for (int k = 0; k < a.length + b.length; k++)		//循环输出合并后的数组的元素
			System.out.print(c[k]+"  ");
		System.out.println();
	}
	public static int[] combineArray (int[] a, int[] b) {
		int al = a.length;					//获得参数a数组的长度
		int bl = b.length;					//获得参数b数组的长度
		int length = al + bl;					//获得合并数组的长度
		int i, j;
		System.out.println("需要被合并的a数组的元素如下:");
		for(i=0;i<al;i++)						//循环显示a数组元素
			System.out.print(a[i]+"  ");
		System.out.println("\n需要被合并的b数组的元素如下:");
		for(i=0;i<bl;i++)						//循环显示b数组元素
			System.out.print(b[i]+"  ");
		System.out.println();
		int[] c = new int[length];				//创建存储合并后数据元素的c数组
		for (i = 0, j = 0; i < al && j < bl;){			//循环查看元素进行比较
			if (a[i] < b[j]) {					//判断两个数组元素值的大小
				c[i + j] = a[i];
				i++;
			} else {
				c[i + j] = b[j];
				j++;
			}
		}
		if (i == al)				//将b数组从下标为j开始将值赋给c数组,放在c数组的al+j,bl-j之间
			System.arraycopy(b, j, c, al + j, bl - j);
		if (j == bl)				//将a数组从下标为i开始将值赋给c数组,放在c数组的bl+i,al-i之间
			System.arraycopy(a, i, c, bl + i, al - i);
		return c;
	}
}

 

实例64  去除重复元素

import java.util.Arrays;
import java.util.Random;

public class OneArray_10 {
	public static int[] trim(int array[]) {
		int len = array.length; 			// 获得传入数组的长度
		int[] brray = new int[len]; 			// 声明一个数组,长度为传入数组的长度
		int newlen = len;
		for (int i = 0; i < len; i++) { 		// 初始化brray
			brray[i] = 0;
		}
		for (int j = 1; j < len; j++) { 		// 记录重复的值
			if (array[j] == array[j - 1]) {
				brray[j] = 1;
				newlen--;
			}
		}
		int[] newArray = new int[newlen]; 	// 声明数组,长度为传入数组长度-重复数字的个数
		int newId = 0;
		for (int i = 0; i < len; i++) { 		// 循环将数组赋值
			if (brray[i] == 0) { 			// 数组元素等于1是存放重复数字
				newArray[newId++] = array[i];
			}
		}
		return newArray;
	}
	public static void main(String[] args) {
		Random rd = new Random();
		int[] array = new int[20]; 			// 声明数组
		System.out.println("没有去除重复数据的数组元素共有" + array.length + "个,它们的值分别为:");
		for (int i = 0; i < array.length; i++) {	// 利用随机数随意产生20个0~20之间的随机数
			array[i] = rd.nextInt(20);		// 给array数组赋值
		}
		Arrays.sort(array);				// 对array数组进行升序排序
		for (int i = 0; i < array.length; i++) {	// 将array数组中的数据输出
			System.out.print(" " + array[i]);
			if ((i + 1) % 5 == 0)
				System.out.println();
		}
		int c[] = trim(array); 				// 调用trim方法去掉重复数字
		System.out.println("\n去掉数组中重复数字,还剩有" + c.length + "个数字,它们的值分别为:");
		for (int i = 0; i < c.length; i++) { 		// 将去掉重复数字的数组元素输出
			System.out.print(c[i] + " ");
		}
	}
}

 

实例65  数组求和计算

import java.util.Random;

public class OneArray_11 {
	public static void main(String[] args) {
		Random rd = new Random();
		int[] array = new int[20]; 			// 声明数组
		System.out.println("随机生成的数组中的元素值如下:");
		for (int i = 0; i < array.length; i++) {	// 利用随机数随意产生20个0~20之间的随机数
			array[i] = rd.nextInt(20);		// 给array数组赋值
			System.out.print(" " + array[i]);	// 输出array数组中的元素值
			if ((i + 1) % 5 == 0)			// 每5个元素一行
				System.out.println();
		}
		int sum = sumArray(array);		// 调用sumArray方法,获取array数组中所有元素的和
		System.out.println("\n数组array中的所有元素的和为:" + sum);
	}
	public static int sumArray(int[] a) {		// 计算数组中所有元素的和
		int sum = 0;
		for (int i = 0; i < a.length; i++) {
			sum = sum + a[i];			// 每个元素值累加
		}
		return sum;
	}
}

 

实例66  求最大值、最小值和平均值

import java.util.Random;

public class OneArray_12 {
	public static void main(String[] args) {
		Random rd = new Random();
		double a[] = new double[10];				// 创建一个长度为10的double型数组
		System.out.println("数组中所有的元素如下:");
		for (int i = 0; i < a.length; i++) {				// 为数组中的每个元素赋值
			a[i] = Math.rint(rd.nextDouble() * 100);	// 获取与double值最相近的并且是整数的double值
			System.out.print(" " + a[i]);
			if ((i + 1) % 5 == 0)
				System.out.println();
		}
		System.out.println();
		double b[] = show(a);								// 调用show方法
		System.out.println("数组a中的最大值max为:" + b[0]);		// 显示最大值
		System.out.println("数组a中的最小值min为:" + b[1]);		// 显示最小值
		System.out.println("数组a中的平均值ave为:" + b[2]);		// 显示平均值
	}
	public static double[] show(double[] dou) {		// 求数组元素中的最大值、最小值和所有元素的平均值
		double[] result = new double[3];			// 创建一个长度为3的double型数组
		double max = dou[0], min = dou[0], sum = dou[0];
		for (int i = 1; i < dou.length; i++) {
			max = max > dou[i] ? max : dou[i];	// 求最大值
			min = min < dou[i] ? min : dou[i]	;	// 求最小值
			sum += dou[i];					// 求所有元素的累加和
		}
		result[0] = max;
		result[1] = min;
		result[2] = sum / dou.length;			// 求平均值
		return result;
	}
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值