您的位置:首页 > 编程语言 > Java开发

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

2016-04-21 11:11 465 查看
</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();
}
}
上班空闲时间做做题,一开始感觉一般般,自己写完再看看感觉有点为了面向对象而面向对象的意思,还要多练练手
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: