Java基础知识
之典型范例二
文 | 莫若吻
1.实现九九乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=184*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
代码如下:
class ForTest { public static void main(String[] args) { /*九九乘法表 外循环控制行数,x 同时代表每一行乘法中变化的那个数字 内循环控制每一列,y 同时代表每一列乘法中最前面不变的那个数字 \t 转义字符,制表符。 */ for(int x=1;x<=9;x++) { for(int y=1;y<=x;y++) { System.out.print(y+"*"+x+"="+(x*y)+"\t"); } System.out.println(); } } }
2.实现水仙花数
输出水仙花数:规律:一个整数=它的个位数的立方+十位数的立方+百位数的立方。
eg:153=1*1*1+5*5*5+3*3*3
代码如下:
class ForTest1 { public static void main(String[] args) { /* 输出水仙花数: 规律:一个整数=它的个位数的立方+十位数的立方+百位数的立方 获取整数的每一位上的数字 个位:153%10=3 十位:153/10%10=5 百位:153/100%10=1 */ System.out.println("输出三位水仙花数:"); for(int num=100;num<999;num++) { int g=num%10; int s=num/10%10; int b=num/100%10; int sum=g*g*g+s*s*s+b*b*b; if(sum==num) { System.out.print(num+" "); } } } }
3.三角数字阵示例
输出n=6的三角数字阵
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
代码如下:
class ForTest1 { public static void main(String[] args) { int z=0; //定义变量,代表不断变化的数字 for(int n=1;n<=6;n++) //外循环代表行数 { for(int x=1;x<=n;x++)//内循环控制每一列 { z++; System.out.print(z+"\t"); } System.out.println(); } } }
4.输出特殊的五位数示例
请输出满足这样条件的五位数。
个位=万位
十位=千位
个位+十位+千位+万位=百位
代码如下:
class ForTest1 { public static void main(String[] args) { System.out.println("满足条件的五位数:"); for(int num=10000;num<99999;num++) { int g=num%10; //获取个位数上的数字 int s=num/10%10; //获取十位数上的数字 int b=num/100%10; //获取百位数上的数字 int q=num/1000%10; //获取千位数上的数字 int w=num/10000%10; //获取万位数上的数字 if(g==w && s==q && b==g+s+q+w) System.out.print(num+" "); } } }
5.数组排序示例——冒泡排序与选择排序
给定一个数组,进行排序。使用冒泡排序和选择排序。
代码如下:
class Test { public static void main(String[] args) { int[] array=new int[]{4,6,90,34,49,20,11}; System.out.println("打印前数组元素为:"); printArr(array); //调用输出数组方法 System.out.println("\n"+"数组按冒泡排序从大到小:"); getArr(array); //调用排序方法 printArr(array); System.out.println("\n"+"数组按选择排序从小到大:"); getArray(array); printArr(array); } //位置互换方法 public static void sort(int[] arr,int a,int b){ int temp=arr[a]; arr[a]=arr[b]; arr[b]=temp; } //选择排序 public static void getArray(int[] arr){ for(int x=0;x<arr.length-1;x++) { for(int y=x+1;y<arr.length;y++) { if(arr[x]>arr[y]) sort(arr,x,y); } } } //冒泡排序 public static void getArr(int[] arr){ for(int x=0;x<arr.length-1;x++) { for(int y=0;y<arr.length-x-1;y++) { if(arr[y]<arr[y+1]) sort(arr,y,y+1); } } } //输出数组 public static void printArr(int[] arr){ System.out.print("["); for(int x=0;x<arr.length;x++) { if(x!=arr.length-1) System.out.print(arr[x]+","); else System.out.print(arr[x]+"]"); } } }
冒泡排序与选择排序的思想和区别:
冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端。
选择排序的思想很直观:每一次排序过程,我们获取当前没有排好序中的最大(小)的元素和数组最右(左)端的元素交换,循环这个过程即可实现对整个数组排序。
冒泡排序和选择排序是排序算法中比较简单和容易实现的算法。
同样数据的情况下,两种算法的循环次数是一样的,但选择排序只有0到1次交换,而冒泡排序只有0到n次交换 。而影响我们算法效率的主要部分是循环和交换,显然,次数越多,效率就越差。选择排序的平均时间复杂度比冒泡排序的稍低。所以相比较而言选择排序效率会更高一些。