1、循环练习
(1)编写程序求1+3+5+7+…+99的值。
1 public class LoopTest{ 2 public static void main(String args[]){ 3 int sum=0;//定义变量,保存求和 4 for(int i=1;i<=99;i++){ 5 //奇偶性判断 6 if(i%2==1){ 7 sum += i;//对奇数求和 8 } 9 } 10 System.out.println(sum); 11 } 12 }
运行结果:
(2)计算水仙花数:个位数的立方+十位数的立方+百位数的立方=自己本身(三位数)
1 public class LoopTest_1{ 2 public static void main(String args[]){ 3 int bai=0; 4 int shi=0; 5 int ge=0; 6 //循环,循环变量从100-999 7 for(int i=100;i<1000;i++){ 8 bai=i/100;//获取百位 9 shi=i/10%10;//获取十位 10 ge=i%10;//获取个位 11 if(bai*bai*bai+shi*shi*shi+ge*ge*ge==i){ 12 System.out.println(i); 13 } 14 } 15 } 16 }
运行结果:
(3)ASCII编码表
美国标准信息交换代码(American Standard Code for Information Interchange);
计算机世界,01 二进制,对于人类不好认识,不好计算,但是计算机对于二进制是非常喜欢的;
美国:计算机可以直接识别人类的文字;
人类的文字和一个整数进行一一对应,人为规定,字母a对应十进制数97,A对应十进制数65;
数字0-9的对应48-57,大写字母A-Z对应65-90,小写字母a-z对应97-122;
计算机存的是对应编码的二进制;
计算机识别汉字:中国自己的编码表,十进制对应一个汉字。简体中文编码表GB2312,现在编码表升级为GBK;
国际标准ISO,万国码:Unicode;
char存储汉字,查询Unicode编码表;
char取值范围是0-65535,无符号的数据类型。
1 public class ASCIIDemo{ 2 public static void main(String args[]){ 3 char c=‘a‘; 4 int i=c+1;//char转成int类型的时候,类型自动提示,char数据类型会查询编码表,得到整数 5 System.out.println(i);//98 6 7 int j=90; 8 char h=(char)j;//int转成char类型的时候,强制转换,会查询编码表 9 System.out.println(h); 10 11 System.out.println((char)6); 12 13 char k=‘你‘; 14 System.out.println(k); 15 } 16 }
(4)输出所有英文字母的小写和大写
1 public class LoopTest_2{ 2 public static void main(String args[]){ 3 //利用编码表实现,字母和数字的对应关系 4 //A-Z 65-90 5 //a-z 97-122 6 char xiaoXie=‘a‘; 7 char daXiao=‘A‘; 8 //定义循环,次数26次 9 for(int i=0;i<26;i++){ 10 System.out.println(xiaoXie+" "+daXiao); 11 xiaoXie++; 12 daXiao++; 13 } 14 } 15 }
运行结果:
(5)打印99乘法表
1 public class LoopTest_3{ 2 public static void main(String args[]){ 3 int n=9; 4 for(int i=1;i<=n;i++){ 5 for(int j=1;j<=i;j++){ 6 System.out.print(i+"*"+j+"="+i*j+"\t"); 7 } 8 System.out.println(); 9 } 10 } 11 }
运行结果:
2、数组练习
(1)定义打印数组元素方法,按照给定的格式打印[11,22,33,44,55]
1 public class ArrayMethodTest{ 2 public static void main(String args[]){ 3 int[] arr={11,22,33,44,55}; 4 printArray(arr); 5 int[] arr2={10,20,30,40,50}; 6 printArray(arr2); 7 } 8 9 /* 10 打印数组 11 */ 12 public static void printArray(int[] arr){ 13 //输出一半中括号 14 System.out.print("["); 15 //数组遍历 16 for(int i=0;i<arr.length;i++){ 17 //数组最后一个元素,保证换行 18 if(i==arr.length-1){ 19 System.out.println(arr[i]+"]"); 20 }else{ 21 //非数组最后一个元素 22 System.out.print(arr[i]+","); 23 } 24 } 25 } 26 }
运行结果:
(2)数组元素逆序
①数组的元素逆序并不是指倒序输出
1 /* 2 数组的倒序输出 3 */ 4 public class ArrayMethodTest_1{ 5 public static void main(String args[]){ 6 int[] arr={1,2,3,4}; 7 for(int i=arr.length-1;i>=0;i--){ 8 System.out.println(arr[i]); 9 } 10 } 11 }
②数组逆序
数组最远端位置的交换,逆序不等于反向遍历;
数组中最远的两个索引进行位置交换,实现数组的逆序;
1 public class ArrayMethodTest_2{ 2 public static void main(String args[]){ 3 int[] arr={1,2,3,4}; 4 //调用数组的逆序方法 5 reverse(arr); 6 printArray(arr); 7 } 8 9 /* 10 数组遍历,遍历过程中,最远端交换 11 */ 12 public static void reverse(int[] arr){ 13 for(int min=0,max=arr.length-1;min<max;min++,max--){ 14 int temp=arr[min]; 15 arr[min]=arr[max]; 16 arr[max]=temp; 17 } 18 } 19 20 /* 21 打印数组 22 */ 23 public static void printArray(int[] arr){ 24 //输出一半中括号 25 System.out.print("["); 26 //数组遍历 27 for(int i=0;i<arr.length;i++){ 28 //数组最后一个元素,保证换行 29 if(i==arr.length-1){ 30 System.out.println(arr[i]+"]"); 31 }else{ 32 //非数组最后一个元素 33 System.out.print(arr[i]+","); 34 } 35 } 36 } 37 }
运行结果:
(3)选择排序(selectSort)
数组的排序:一般是升序排序,元素从小到大;
规则:比较大小,位置交换;
选择排序(selectSort):数组中每个元素进行比较
1 /* 2 选择排序(selectSort) 3 */ 4 public class ArrayMethodTest_3{ 5 public static void main(String args[]){ 6 int[] arr ={1,8,3,-6,0,9}; 7 selectSort(arr); 8 printArray(arr); 9 } 10 11 /* 12 选择排序方法 13 */ 14 public static void selectSort(int[] arr){ 15 for(int i=0;i<arr.length-1;i++){ 16 for(int j=i+1;j<arr.length;j++){ 17 //数组的元素进行判断 18 if(arr[i]>arr[j]){ 19 //数组的换位 20 int temp=arr[i]; 21 arr[i]=arr[j]; 22 arr[j]=temp; 23 } 24 } 25 } 26 } 27 28 /* 29 打印数组 30 */ 31 public static void printArray(int[] arr){ 32 //输出一半中括号 33 System.out.print("["); 34 //数组遍历 35 for(int i=0;i<arr.length;i++){ 36 //数组最后一个元素,保证换行 37 if(i==arr.length-1){ 38 System.out.println(arr[i]+"]"); 39 }else{ 40 //非数组最后一个元素 41 System.out.print(arr[i]+","); 42 } 43 } 44 } 45 }
运行结果:
(4)冒泡排序(bubbleSort)
数组的相邻元素换位置
1 /* 2 冒泡排序 3 */ 4 public class ArrayMethodTest_4{ 5 public static void main(String args[]){ 6 int[] arr ={1,8,3,-6,0,9}; 7 bubbleSort(arr); 8 printArray(arr); 9 } 10 11 /* 12 冒泡排序方法 13 */ 14 public static void bubbleSort(int[] arr){ 15 for(int i=0;i<arr.length-1;i++){ 16 for(int j=0;j<arr.length-i-1;j++){ 17 //比较的索引是j和j+1 18 if(arr[j]>arr[j+1]){ 19 int temp=arr[j]; 20 arr[j]=arr[j+1]; 21 arr[j+1]=temp; 22 } 23 } 24 } 25 } 26 /* 27 打印数组 28 */ 29 public static void printArray(int[] arr){ 30 //输出一半中括号 31 System.out.print("["); 32 //数组遍历 33 for(int i=0;i<arr.length;i++){ 34 //数组最后一个元素,保证换行 35 if(i==arr.length-1){ 36 System.out.println(arr[i]+"]"); 37 }else{ 38 //非数组最后一个元素 39 System.out.print(arr[i]+","); 40 } 41 } 42 } 43 }
运行结果:
(5)数组的折半查找
1 public class ArrayMethodTest_5{ 2 public static void main(String args[]){ 3 int[] arr={1,3,5,7,9}; 4 int index=binarySearch(arr,5); 5 System.out.println(index); 6 } 7 8 /* 9 数组的折半查找 10 */ 11 public static int binarySearch(int[] arr,int key){ 12 int min=0; 13 int max=arr.length-1; 14 int mid=0; 15 16 //循环折半,条件min<=max 17 while(min<=max){ 18 //计算中间索引 19 mid=(min+max)/2; 20 if(key>arr[mid]){ 21 min=mid+1; 22 }else if(key<arr[mid]){ 23 max=mid-1; 24 }else{ 25 //找到元素,返回元素索引 26 return mid; 27 } 28 } 29 //没有找到 30 return -1; 31 } 32 }
运行结果: