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(); } }上班空闲时间做做题,一开始感觉一般般,自己写完再看看感觉有点为了面向对象而面向对象的意思,还要多练练手
相关文章推荐
- java.security.cert.CertPathValidatorException: timestamp check failed
- java西天取经之路(二)Servlet部署和配置
- java mysql connection url
- 《疯狂Java讲义(第3版)》.(李刚)——注释
- Spring mvc redirect跳转路径问题
- Java线程中断的本质深入理解
- 初识java算法
- 尝试解决Java多行字符串的编辑问题
- spring security oauth2.0 实现
- Java迭代器的一般用法
- java获取访问路径、域名、项目名、请求入参
- Java锁(二)ReentrantLock独占锁分析
- Eclipse的插件Maven打包
- java中的内存泄漏
- 工作问题-java-全选框值问题
- java实现解压(zip和rar文件)实例-解决中文乱码问题
- 打印 SpringMVC中所有的接口URL
- Java中hashmap 遍历
- Spring 相关 jar包介绍
- java.util.ResourceBundle使用详解及如何调用properties文件