大数据之JAVA基础(五):循环和数组方法练习
2018-03-22 12:27
471 查看
案例1:编写 1+3+5+7+......+99的值 /* * 求1-99的基数和 */ public static void fun01() { int i = 1; int sum = 0; for(;i<100;i+=2) { sum += i; } System.out.println("0-99基数和: "+ sum); }
案例2:求所有的水仙花数(100-999之间,每位数字立方之和等于该3位数本身。如153 = 1*1*1 + 3*3*3 + 5*5*5)
/* * 输出所有的水仙花数 */public static void func02() { for(int i = 100;i<1000;i++) { int bai = i / 100 % 10; int shi = i / 10 % 10; int ge = i % 10; if(bai * bai *bai + shi *shi*shi + ge*ge*ge == i) { System.out.println(i); } } }
案例3: 利用for循环打印26个大写26个小写英文字母
/* * 打印大小写英文字母 */ public static void func03() { //A-Z : 65 - 91 //a-z : 97 - 122 for(int i=97;i<123;i++) { if(i>='a' && i<='z' || i>= 'A' && i<='Z') System.out.println((char)i); } }
案例4:打印99乘法表
/* * 打印99乘法表 */ public static void func04() { for (int i = 1; i <10; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "*" + i + " = " + i*j); System.out.print(" "); } System.out.println(); } }
案例5:编写数组的通用打印方法,例如打印(“【1,2,3,4,5】”)
/* * 数组通用打印方法 */ public static void func05(int [] arr) { System.out.print('['); for (int i = 0; i < arr.length; i++) { if(i == arr.length -1) System.out.print(arr[i]); else System.out.print(arr[i] + ","); } System.out.print(']'); }
案例6:实现数组的逆序
/* * 数组逆序 * 思想:首位和末位交换,然后首位 + 1,末位 -1 ,再次交换,以此类推,直到首位大于或者等于末位 */ public static void func06(int [] arr) { int start = 0; // 开始索引 int end = arr.length - 1; //末尾索引 for(start = 0 ; start <= end ; start ++,end--) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; } for (int i : arr) { System.out.println(i); } }
案例7:数组的冒泡排序
/* * 数组的冒泡排序(从小到大) * 思想:外层i从0位置开始,内层j从其后一位(i+1)开始,比较(arr.length - 1 - i)次,进行比较和交换 * */ public static void func07(int [] arr) { for (int i = 0; i < arr.length - 1; i++) { for(int j = i + 1; j < arr.length - 1 - i ; j ++) { if(arr[i] > arr[j] ) { int temp = arr[i]; arr[i] = arr[j]; arr[j] =temp; } } } for (int i : arr) { System.out.println(i); } }
案例8:有序数组的折半查找
/* * 有序数组的折半查找 */ public static int func08(int [] arr,int search) { int min = 0; //最小索引 int max = arr.length - 1; //最大索引 int mid = (max + min) /2; //折半 while(arr[mid] != search) { if(arr[mid] > search) { max = mid - 1; } else { min = mid + 1; } mid = (max + min) /2; //折半 if(min > max) { return -1; } } return mid; }
案例2:求所有的水仙花数(100-999之间,每位数字立方之和等于该3位数本身。如153 = 1*1*1 + 3*3*3 + 5*5*5)
/* * 输出所有的水仙花数 */public static void func02() { for(int i = 100;i<1000;i++) { int bai = i / 100 % 10; int shi = i / 10 % 10; int ge = i % 10; if(bai * bai *bai + shi *shi*shi + ge*ge*ge == i) { System.out.println(i); } } }
案例3: 利用for循环打印26个大写26个小写英文字母
/* * 打印大小写英文字母 */ public static void func03() { //A-Z : 65 - 91 //a-z : 97 - 122 for(int i=97;i<123;i++) { if(i>='a' && i<='z' || i>= 'A' && i<='Z') System.out.println((char)i); } }
案例4:打印99乘法表
/* * 打印99乘法表 */ public static void func04() { for (int i = 1; i <10; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "*" + i + " = " + i*j); System.out.print(" "); } System.out.println(); } }
案例5:编写数组的通用打印方法,例如打印(“【1,2,3,4,5】”)
/* * 数组通用打印方法 */ public static void func05(int [] arr) { System.out.print('['); for (int i = 0; i < arr.length; i++) { if(i == arr.length -1) System.out.print(arr[i]); else System.out.print(arr[i] + ","); } System.out.print(']'); }
案例6:实现数组的逆序
/* * 数组逆序 * 思想:首位和末位交换,然后首位 + 1,末位 -1 ,再次交换,以此类推,直到首位大于或者等于末位 */ public static void func06(int [] arr) { int start = 0; // 开始索引 int end = arr.length - 1; //末尾索引 for(start = 0 ; start <= end ; start ++,end--) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; } for (int i : arr) { System.out.println(i); } }
案例7:数组的冒泡排序
/* * 数组的冒泡排序(从小到大) * 思想:外层i从0位置开始,内层j从其后一位(i+1)开始,比较(arr.length - 1 - i)次,进行比较和交换 * */ public static void func07(int [] arr) { for (int i = 0; i < arr.length - 1; i++) { for(int j = i + 1; j < arr.length - 1 - i ; j ++) { if(arr[i] > arr[j] ) { int temp = arr[i]; arr[i] = arr[j]; arr[j] =temp; } } } for (int i : arr) { System.out.println(i); } }
案例8:有序数组的折半查找
/* * 有序数组的折半查找 */ public static int func08(int [] arr,int search) { int min = 0; //最小索引 int max = arr.length - 1; //最大索引 int mid = (max + min) /2; //折半 while(arr[mid] != search) { if(arr[mid] > search) { max = mid - 1; } else { min = mid + 1; } mid = (max + min) /2; //折半 if(min > max) { return -1; } } return mid; }
相关文章推荐
- java学习笔记:Java语法基础2(循环,函数,重载,数组,方法)
- 黑马程序员_01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)
- 黑马程序员-----java基础③(数组及循环练习)
- java中传递基础数据类型值与传递数组引用变量给方法的不同之处
- 黑马程序员_Java基础(数据类型、Java操作符、数组排序方法)
- java基础知识--循环,数组,方法
- [零基础学JAVA]Java SE基础部分-03.标识符、数据类型,数组,方法
- 黑马程序员-----java基础------for循环结构----do...while循环----while循环------方法---数组(一维,二维)
- Java基础(2)变量,循环,数组,方法。。。。。。
- 01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)
- Java利用Arrays的asList方法输出数组数据
- java例程练习(控制台参数与基础数据类型的包装类)
- Java利用Arrays的asList方法输出数组数据
- Java利用Arrays的asList方法输出数组数据
- Java 基础(二) 数据类型:类(class) 其定义方法及其设计方法
- java例程练习(基础数据类型的包装类)
- 【数据结构与算法基础】以数组实现的循环队列 / Circular Queue implemented by array
- java例程练习(控制台参数与基础数据类型的包装类)
- C\C++ 程序员从零开始学习Android - 个人学习笔记(四) - java基础 - 数据类型、变量、字符串、数组
- Java基础:数组Array转成List的几种方法