Java基础知识之典型范例二


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次交换 。而影响我们算法效率的主要部分是循环和交换,显然,次数越多,效率就越差。选择排序的平均时间复杂度比冒泡排序的稍低。所以相比较而言选择排序效率会更高一些。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值