50道经典Java逻辑编程题--1~3

</pre><pre name="code" class="java">/*
【程序1】  
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,问每个月的兔子总数为多少?  
1.程序分析:   兔子的规律为数列1,1,2,3,5,8,13,21....  
*/
class Yue
{
	private int yue;
	
	Yue(int yue)
	{
		this.yue = yue;
	}

	public int getYue()
	{
		return yue;
	}
}

class RabbitNumber
{	
	public static int getNumber(int yue)
	{
			if (yue==1 || yue==2)
			{
				return 1;
			}
			else if (yue<1)
			{
				throw new FuShuException("没有这个月份");
			}
			else
			{
				return getNumber(yue-1)+getNumber(yue-2);
			}
	}
}

class FuShuException extends RuntimeException
{
	FuShuException(String msg)
	{
		super(msg);
	}
}

class  Rabbit
{
	public static void main(String[] args) 
	{
		System.out.println(RabbitNumber.getNumber(new Yue(6).getYue()));
	}
}
<pre name="code" class="java">/*
【程序2】  
题目:判断101-200之间有多少个素数,并输出所有素数。  
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,  
则表明此数不是素数,反之是素数。  
*/
class SuShuCheck
{
	public void getSuShu(int sqrt)
	{
		boolean flag = true;

		for (int num=2; num<sqrt; num++)
		{
			if (sqrt%num==0)	
			{
				flag = false;
				break;
			}		
		}		
		
		if (flag == true)
		{
			System.out.print(sqrt+"\t");
		}
	}
}

class AllNumber
{
		private int start;
		private int end;

		AllNumber(int a,int b)
		{
			start = a;
			end = b;
		}
		
		public void method()
		{
			for (int sqrt=start; sqrt<=end; sqrt++)
			{
				new SuShuCheck().getSuShu(sqrt);
			}
		}
}

class  SuShu
{
	public static void main(String[] args) 
	{
		AllNumber n = new AllNumber(101,200);
		System.out.println("在101到200之间的素数有:");
		n.method();
	}
}
 
/*
【程序3】  
题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。  
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。  

*/
class EachNumber
{
	private int bai=0;
	private int shi=0;
	private int ge=0;

	public void getEachNumber()
	{						
		for (int num=100; num<1000; num++)
		{			
				bai = num/100;
				shi = (num-(bai*100))/10;
				ge = num-(bai*100)-(shi*10);

				new FlowerNumberCheck().check(num,bai,shi,ge);
		}		
	}
}

class FlowerNumberCheck
{
	public void check(int num,int a,int b,int c)
	{
		if (num == a*a*a+b*b*b+c*c*c)
			System.out.print(num+"\t");	
	}
}

class  FlowerNumber
{
	public static void main(String[] args) 
	{
		new EachNumber().getEachNumber();
	}
}
上班空闲时间做做题,一开始感觉一般般,自己写完再看看感觉有点为了面向对象而面向对象的意思,还要多练练手

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值