java学习之路 - 面向对象编程-数组-练习题(3)
2016-07-31 22:47
507 查看
public class ArrayTest { //创建一个包含十个int型数据的数组,int型元素为1-20之内随机数,并求和、最大值、最小值、并遍历输出 public static void main(String[] args) { int[] arr = new int[8]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random() * 20); } // 遍历 for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); // 求和 int sum = 0; for (int i = 0; i < arr.length; i++) { sum += arr[i]; } // 求最大值 int max = arr[0]; for (int i = 0; i < arr.length; i++) { if (arr[i] > max) { max = arr[i]; } } // 求最小值 int min = arr[0]; for (int i = 0; i < arr.length; i++) { if (arr[i] < min) { min = arr[i]; } } System.out.println("sum:" + sum + ",max:" + max + ",min:" + min); // 遍历 for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); } } class ArrayTest2 { public static void main(String[] args) { int[] arr = new int[8]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random() * 20); } // 遍历 for (int i = 0; i < arr.length; i++) { // 经典for循环 int var = arr[i]; System.out.print(var + " "); //var = 10000 * i; 赋值不会影响数组元素的值 } System.out.println(); // 增强型for循环, 仅用于遍历数组, 对于数组的访问是只读的 /* for (元素类型 变量 : 数组名) { System.out.println(变量); }*/ for (int var : arr) { System.out.print(var + " "); //var = 1000 * i; } } } class ArrayTest3 { //根据下标找出最大值、最小值 public static void main(String[] args) { int[] arr = new int[8]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random() * 20); } //遍历 for (int var : arr) { System.out.print(var + " "); } System.out.println(); //0 1 2 3 4 5 6 7 //2 6 9 0 5 11 18 0 // 最大值下标为6 int maxValueIndex = 0; for (int i = 0; i < arr.length; i++) { if (arr[i] > arr[maxValueIndex]) { maxValueIndex = i; } } System.out.println("最大值:" + arr[maxValueIndex]); int minValueIndex = 0; for (int i = 0; i < arr.length; i++) { if (arr[i] < arr[minValueIndex]) { minValueIndex = i; } } System.out.println("最小值:" + arr[minValueIndex]); } } class ArrayTest4 { public static void main(String[] args) { int[] arr = new int[8]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random() * 20 - 100); } //遍历 for (int var : arr) { System.out.print(var + " "); } System.out.println(); //9 13 7 13 17 14 11 5 int max = 0x80000000; for (int i = 0; i < arr.length; i++) { if (arr[i] > max) { max = arr[i]; } } System.out.println("max:" + max); int min = 0x7fffffff; for (int i = 0; i < arr.length; i++) { if (arr[i] < min) { min = arr[i]; } } System.out.println("min:" + min); } } class ArrayTest5 { //数组复制 public static void main(String[] args) { int[] arr = new int[8]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random() * 20); } //遍历 for (int var : arr) { System.out.print(var + " "); } System.out.println(); //0 1 2 3 4 5 6 7 //2 1 0 6 9 2 12 3 //数组复制 //0 1 2 3 4 5 6 7 //0 0 0 0 0 0 0 0 //2 1 0 6 9 2 12 3 int[] arr2 = new int[arr.length]; for (int i = 0; i < arr.length; i++) { arr2[i] = arr[i]; } //遍历 for (int var : arr2) { System.out.print(var + " "); } System.out.println(); } } class ArrayTest6 { //获取子数组 public static void main(String[] args) { int[] arr = new int[8]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random() * 20); } //遍历 for (int var : arr) { System.out.print(var + " "); } System.out.println(); //0 1 2 3 4 5 6 7 //2 1 0 6 9 2 12 3 //获取子数组 //0 1 2 3 //0 0 0 0 //2 1 0 6 int[] child = new int[arr.length / 2]; for (int i = 0; i < child.length; i++) { // 循环次数以容量小的为准 child[i] = arr[i]; } for (int var : child) { System.out.print(var + " "); } System.out.println(); } } class ArrayTest7 { //对老数组进行赋值 public static void main(String[] args) { int[] arr = new int[8]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random() * 20); } //遍历 for (int var : arr) { System.out.print(var + " "); } System.out.println(); //0 1 2 3 4 5 6 7 //2 1 0 6 9 2 12 3 //扩容 //0 1 2 3 4 5 6 7 8 9 15 //0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 //2 1 0 6 9 2 12 3 0 0 0 0 0 0 0 0 int[] bigger = new int[arr.length * 2]; for (int i = 0; i < arr.length; i++) { bigger[i] = arr[i]; } arr = bigger; //遍历 for (int var : arr) { System.out.print(var + " "); } System.out.println(); } } class ArrayTest8 { //将所有偶数放入新的数组 public static void main(String[] args) { int[] arr = new int[8]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random() * 20); } //遍历 for (int var : arr) { System.out.print(var + " "); } System.out.println(); //0 1 2 3 4 5 6 7 //2 1 0 6 9 2 12 3 //取出所有偶数,存入一个新数组 //0 1 2 3 4 5 6 7 //0 0 0 0 0 0 0 0 //2 0 6 2 12 0 0 0 //最终数组 //0 1 2 3 4 //0 0 0 0 0 //2 0 6 2 12 int[] newArr = new int[arr.length]; int count = 0; // 最关键变量, 用于指示新数组中赋值的下标 for (int i = 0; i < arr.length; i++) { if (arr[i] % 2 == 0) { newArr[count] = arr[i]; count++; // 赋完值后,自增,用于下一次再往数组中保存值时的新下标 } } int[] finalArr = new int[count]; // 最后count值就是新数组中的有效元素个数 for (int i = 0; i < count; i++) { // 依次把所有有效元素存入最终数组中即可 finalArr[i] = newArr[i]; } //遍历 for (int var : finalArr) { System.out.print(var + " "); } System.out.println(); // 把所有奇数提取成一个新的子数组 } } class ArrayTest9 { //实现数组的反转 public static void main(String[] args) { int[] arr = new int[8]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random() * 20); } //遍历 for (int var : arr) { System.out.print(var + " "); } System.out.println(); //0 1 2 3 4 5 6 7 //2 1 0 6 9 2 12 3 //反转 //3 12 2 9 6 0 1 2 for (int i = 0; i < arr.length / 2; i++) { // 交换i位置和arr.length - 1 -i位置的元素 int tmp = arr[i]; arr[i] = arr[arr.length - 1 - i]; arr[arr.length - 1 - i] = tmp; } //遍历 for (int var : arr) { System.out.print(var + " "); } System.out.println(); } } class ArrayTest10 { //数组排序算法,冒泡排序 public static void main(String[] args) { int[] arr = new int[8]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random() * 20); } //遍历 for (int var : arr) { System.out.print(var + " "); } System.out.println(); // 外循环控制比较交换的趟数, 需要处理数组长度-1趟 for (int j = 0; j < arr.length - 1; j++) { // 内循环处理每趟中比较交换的次数 for (int i = 0; i < arr.length - 1 - j; i++) { // 总是从最左边开始处理, 比较i位置和右边相邻位置的元素的值 if (arr[i] > arr[i + 1]) { // 如果左大右小, 进行交换 int tmp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = tmp; } } } //遍历 for (int var : arr) { System.out.print(var + " "); } System.out.println(); } } class ArrayTest11 { //java自带的方法,改良版快速排序 public static void main(String[] args) { int[] arr = new int[8]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random() * 20); } //遍历 for (int var : arr) { System.out.print(var + " "); } System.out.println(); Arrays.sort(arr); // 改良版快速排序 //遍历 for (int var : arr) { System.out.print(var + " "); } System.out.println(); } }
相关文章推荐
- java学习之路 之 面向对象编程-数组练习题(2)
- java学习之路 之 面向对象编程-面向对象-数组练习题(1)
- java学习之路 之 面向对象编程-数组
- java学习之路 之 面向对象编程-main方法的语法、数组排序、操作数组的工具类、数组操作常见问题
- java学习之路 之 面向对象编程-可变个参数-练习题
- java学习之路 之 面向对象编程-面向对象-第一个小项目P1-FAACS
- java学习之路之基本语法-变量-练习题
- java学习之路 之 基本语法-特殊的流程控制语句-练习题
- java学习之路 之 面向对象编程-面向对象特征之一(封装和隐藏)级类的成员之三(构造器、构造方法)
- java学习之路 之 基本语法-程序流程控制-switch语句练习题
- java学习之路 之 高级类特性-抽象类-练习题
- java学习之路 之 面向对象编程-面向对象-对象的关联
- java学习之路之基本语法-运算符练习题
- java学习之路 之 高级类特性1-多态、重写-练习题2
- java学习之路 之 高级类特性2-接口(interface)-练习题
- java学习之路 之 面向对象编程-面向对象-第一个小项目P1-FAACS
- java学习之路 之 基本语法-程序流程控制-循环结构-for 循环练习题
- 黑马程序员 【】java学习之路——关键字、标识符、注释、常量和变量、数组
- java学习之路 之 基本语法-程序流程控制-循环结构-while循环练习题
- java学习之路 之 面向对象编程-面向对象与面向过程及面向对象的思想概念