java一对兔子代码注释,兔子问题java完整代码

JAVA——请教一个关于面向对象的问题

你的想法不错,但是程序逻辑有点混乱,按你的思路随手写了个,注释还算比较全吧

创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、做网站、成都外贸网站建设公司、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的平定网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

子兔子和父兔子只要一个类就能表示,都可以抽象为兔子,并没有实质区别,兔子里面有属性:父兔子对象、子兔子List、是否死了、出生月数

我没有处理超出Integer类型范围的异常,死期初始定为Integer.MAX_VALUE,即不会死

/**

* Rabbit.java

*/

import java.util.ArrayList;

import java.util.List;

/**

* 兔子

* @author Shawn

* @date Jun 30, 2013

*/

public class Rabbit {

/**

 * 多少月可以生兔子(包括此月)

 */

static final int RABBIT_BORN = 3;

/**

 * 多少月兔子会死,假设到此月兔子生下后代之后才死,值不小于RABBIT_BORN 

 */

static final int RABBIT_DEATH = Integer.MAX_VALUE;

/**

 * 父兔子

 */

private Rabbit parent;

/**

 * 出生后有多少月

 */

private Integer month;

/**

 * 死了没

 */

private Boolean isDead;

/**

 * 子兔子

 */

private ListRabbit sons = new ArrayListRabbit();

public Rabbit(Rabbit parent, Integer month) {

this.parent = parent;

this.month = month;

if (month = RABBIT_DEATH) {

this.isDead = true;

} else {

this.isDead = false;

}

setSons();

}

private void setSons() {

if (month = RABBIT_BORN) {

// 如果死了则按死期计算,否则按当前月数计算

int canBreedMonth = isDead ? RABBIT_DEATH - RABBIT_BORN + 1 : month

- RABBIT_BORN + 1;

for (int i = 0; i  canBreedMonth; i++) {

Rabbit son = new Rabbit(this, month - RABBIT_BORN - i);

sons.add(son);

}

}

}

public Integer getMonth() {

return month;

}

public Rabbit getParent() {

return parent;

}

public Boolean isDead() {

return isDead;

}

public ListRabbit getSons() {

return sons;

}

}

/**

* RabbitTree.java

*/

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

/**

* 兔子的生成树,非必要

* 其实只从一个根Rabbit对象就可计算出所有兔子个数

* 此类作用是格式化兔子树,便于获取树的各种属性

* @author Shawn

* @date Jun 30, 2013

*/

public class RabbitTree {

/**

 * 此后只计算有多少对兔子

 */

static final int RABBIT_PAIR = 2;

/**

 * 多少月

 */

private int month;

/**

 * 存储整颗树,外层Map表示层次,内层List为每层的兔子

 */

private MapInteger, ListRabbit rabbitMap = new HashMapInteger, ListRabbit();

/**

 * 构造函数,输入月份(包括此月)

 * 

 * @param month

 */

public RabbitTree(int month) {

if (month = 0) {

throw new IllegalArgumentException("月数不正确");

}

this.month = month;

// 祖先兔子,从此兔子即可获取整颗树结构

Rabbit ancestor = new Rabbit(null, month);

initTree(ancestor);

}

/**

 * 树的初始化

 * 

 * @param rabbit

 */

private void initTree(Rabbit rabbit) {

ListRabbit currentLevel = new ArrayListRabbit();

ListRabbit nextLevel = rabbit.getSons();

currentLevel.add(rabbit);

//处理根节点

rabbitMap.put(1, currentLevel);

Integer count = 2;

ListRabbit sons = new ArrayListRabbit();

sons.addAll(nextLevel);

//处理叶节点

while (sons.size() != 0) {

currentLevel = new ArrayListRabbit();

nextLevel = new ArrayListRabbit();

for (Rabbit r : sons) {

currentLevel.add(r);

for (Rabbit e : r.getSons()) {

nextLevel.add(e);

}

}

sons = new ArrayListRabbit();

sons.addAll(nextLevel);

rabbitMap.put(count, currentLevel);

count++;

}

}

/**

 * 获得树上兔子总数

 * 

 * @return

 */

public int getRabbitNum() {

int count = 0;

for (Integer level : rabbitMap.keySet()) {

ListRabbit list = rabbitMap.get(level);

for (Rabbit r : list) {

if (!r.isDead()) {

count++;

}

}

}

return count * RABBIT_PAIR;

}

/**

 * 获取树的高度

 * 

 * @return

 */

public int getLevel() {

return rabbitMap.size();

}

/**

 * 获取树的月数

 * 

 * @return

 */

public int getMonth() {

return month;

}

public static void main(String[] args) {

RabbitTree tree = new RabbitTree(10);

System.out.println(tree.getRabbitNum());

}

}

如何用Java程序编程,最好讲解一下。题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对

这道题目考察的是运用递归(数列)的思路去解决问题。

假设到第24个月,示例代码如下:

public class woo {

public static void main(String args[]) {

System.out.println(fib(24));

}

private static int fib(int n) {

if (n == 1 || n == 2) {

return 1;

} else {

return fib(n - 1) + fib(n - 2);

}

}

}

扩展资料:

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……。

在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

参考资料:

百度百科:斐波那契数列

百度百科:递归函数

明天要考java,有几个知识点不理解,求大佬可以把以下的题目代码发一下,能做几个都好,只要注释全就行~

还是耐着性子给你做完了望采纳。。。

第七题

/**

* 动物抽象类

*/

public abstract class Animal {

//颜色

private String color;

//类别

private String type;

//吃饭

public abstract void eat();

//叫

public abstract void cry();

//get set方法省略。。。

}

/**

* 游泳的接口

*/

public interface Swimable {

//游泳

public void swim();

}

/**

* 兔子类

*/

public class Rabbit extends Animal {

@Override

public void eat() {

System.out.println("小兔几吃萝卜。。。");

}

@Override

public void cry() {

System.out.println("小兔几呵呵哒。。。");

}

}

/**

* 青蛙类

*/

public class Frog extends Animal implements Swimable {

public void swim() {

System.out.println("青蛙会蛙泳。。。");

}

@Override

public void eat() {

System.out.println("青蛙吃昆虫。。。");

}

@Override

public void cry() {

System.out.println("青蛙呱呱叫。。。");

}

}

public class Test {

public static void main(String[] args) {

//兔子

Rabbit rabbit = new Rabbit();

rabbit.eat();

rabbit.cry();

//青蛙

Frog frog = new Frog();

frog.eat();

frog.cry();

frog.swim();

}

}

第八题

/**

* 学生类

*/

public class Student {

//学号

private String id;

//姓名

private String name;

//性别

private char gender;

//年龄

private int age;

public Student(String id, String name, char gender, int age) {

this.id = id;

this.name = name;

this.gender = gender;

this.age = age;

}

//获得学号、姓名、性别、年龄

public String toString() {

return "学号:"+id +"  姓名:" + name + "   性别:" + gender + "  年龄:" + age;

}

//修改年龄

public void changeAge(int range) {

age = range;

}

//get set方法省略。。。

}

public class Test {

public static void main(String[] args) {

Student s = new Student("alibb008", "杰克马", '公', 18) ;

System.out.println(s.toString());

s.changeAge(50);

System.out.println(s.toString());

}

}

感慨啊。。。

java程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....

public class Test {//用递归法计算兔子的规律

static long fib(int x){

if(x2) return (fib(x-1)+fib(x-2));

else return 1;

}

public static void main(String[] args) {

for(int i=1;i=24;i++){

long n=fib(i);

//算出的是对数.要算总数的法,*2就行

System.out.println("第"+i+"个月有兔子对数为"+n);

}

}

}

java 怎样给源代码添加注释

1、单行(single-line)--短注释://……

单独行注释:在代码中单起一行注释,

注释前最好有一行空行,并与其后的代码具有一样的缩进层级。如果单行无法完成,则应采用块注释。

注释格式:/*

注释内容

*/

行头注释:在代码行的开头进行注释。主要为了使该行代码失去意义。

注释格式://

注释内容

行尾注释:尾端(trailing)--极短的注释,在代码行的行尾进行注释。一般与代码行后空8(至少4)个格,所有注释必须对齐。

注释格式:代码

+

8(至少4)个空格

+

//

注释内容

2、块(block)--块注释:/*……*/

注释若干行,通常用于提供文件、方法、数据结构等的意义与用途的说明,或者算法的描述。一般位于一个文件或者一个方法的前面,起到引导的作用,也可以根据需要放在合适的位置。这种域注释不会出现在HTML报告中。注释格式通常写成:

/*

*

注释内容

*/

3、文档注释:/**……*/

注释若干行,并写入javadoc文档。每个文档注释都会被置于注释定界符

/**......*/

...

急!!对一个JAVA源代码加注释~~~

import java.awt.*; // 导入相应的awt工具组件

import java.awt.event.*;// 导入awt工具组件的事件类

/**

* 作用:Calc类用于演示加法计算器的功能p

* @author 网络用户

* @version 1.0 2009-6-3

* @since JDK 1.5

*/

class Calc extends WindowAdapter implements ActionListener

{

//以下声明相关变量

Frame f; //窗口

// Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9;

Button b[] = new Button[10]; //10个按钮,分别对应数字0到9

Button be, badd, bc; //bc为=,badd为+,bc为归0按钮

TextField answer; //文本框answer用于显示相加的结果

Panel p; //面板

int t1, t2,result; //t1,t2分别表示被加数,加数

Button bmin, bmul, bdev; //bmin为-,bmul为*,bdev为/

String op1 = null,lastOP = null;

boolean isOK = true;

/**

* 作用:main方法为程序运行的入口

* @param args

*/

public static void main( String args[] )

{

Calc cg = new Calc(); //创建一个calc类的对象

cg.go(); //调用go方法,显示加法器界面,并完成加法功能

}

/**

* 作用:go()方法用于显示加法器界面,并完成加法功能

*/

public void go()

{

p = new Panel(); //创建面板的对象,10个按钮将在此面板对象上添加和显示

answer = new TextField("0", 15); //设置文本框的默认值为0,文本框的长度15个字符

b[0] = new Button("0"); //以下就是那10个按钮,按钮上的文本就是0到9的数字

b[1] = new Button("1");

b[2] = new Button("2");

b[3] = new Button("3");

b[4] = new Button("4");

b[5] = new Button("5");

b[6] = new Button("6");

b[7] = new Button("7");

b[8] = new Button("8");

b[9] = new Button("9");

be = new Button("="); //=号

badd = new Button("+"); //+号

bc = new Button("C"); //归0按钮

bmin = new Button("-"); //-号

bmul = new Button("*"); //*号

bdev = new Button("/"); //除号

p.setLayout(new GridLayout(4, 4)); //将面板设置为4行3列,即12个格子,刚好可以存放地10个数字按钮另加+号按钮和=号按钮,共12个按钮

p.add(b[1]);

p.add(b[2]);

p.add(b[3]);

p.add(b[4]);

p.add(b[5]);

p.add(b[6]);

p.add(b[7]); //添加10个数字按钮到面板上

p.add(b[8]);

p.add(b[9]);

p.add(b[0]);

for( int i = 0; i b.length; i++ )

b[i].addActionListener(this); //为10个数字按钮添加事件监听器,以用于实现加法功能

p.add(be); //添加=号按钮到面板上

p.add(bc); //归0按钮

p.add(badd); //添加+号按钮到面板上

be.addActionListener(this); //为=号按钮添加事件监听器,用于实现加法功能

bc.addActionListener(this); //为归0按钮添加事件监听器,用于将计算结果归0

badd.addActionListener(this); //为+号按钮添加事件监听器,用于实现加法功能

p.add(bmin); //-号

p.add(bmul); //*号

p.add(bdev); //除号

bmin.addActionListener(this);

bmul.addActionListener(this);

bdev.addActionListener(this);

f = new Frame("计算器"); //创建一个Frame对象(窗口),窗口的标题就是calc

f.setLocation(300, 300); //窗口的弹出位置

f.setSize(300, 300); //窗口的大小为300*300像素

f.add(answer, "North"); //将文本框设置在窗口的北部(上),窗口的默认布局为BorderLayout,即东西南北中5个位置

f.add(p, "Center"); //将面板设置在窗口的中部(中)

f.addWindowListener(this); //为窗口添加事件监听器,用于实现关闭窗口的功能

f.pack(); //此方法用于窗口到合适的大小

f.setVisible(true); //显示窗口,为false时将不会显示窗口

}

//在10个数字按钮和3个功能按钮上单击,将触发此方法

public void actionPerformed( ActionEvent e )

{

if( e.getSource() == bc )

{//单击了归0按钮,设置为默认值

result = 0;

lastOP = null ;

answer.setText("0"); //文本框设为0

isOK = true; //已经经过运算了

} else if( e.getSource() == badd || e.getSource() == bmin || e.getSource() == bmul || e.getSource() == bdev ||e.getSource() == be)

{//单击运算符号的按钮

op1 = e.getActionCommand();

getResult(op1);

} else

{//单击0到9之间的任意一个数字按钮

for( int i = 0; i b.length; i++ )

if( e.getSource() == b[i] )

{

if( isOK == true )

{

answer.setText(b[i].getActionCommand());

isOK = false;

}

else

{

answer.setText(answer.getText()+b[i].getActionCommand()); //在文本框上显示连续单击那几个数字

}

}

}

}

/**

* 作用:getResult()方法用于计算出结果值,并在文本框显示出来P

* @param op 本次操作运算符

* @param text

*/

private void getResult( String op )

{

if(answer.getText().equals("除数不能为0"))

{

answer.setText(result+"");

return;

}

if( lastOP==null )

{//没有上一次的操作

if(op.equals("=")){

return;

}else{

result = Integer.parseInt(answer.getText());

}

} else if( lastOP.equals("+") )

{//上一次单击了+号按钮

result = result + Integer.parseInt(answer.getText());

answer.setText(result+""); //文本框设为0

} else if( lastOP.equals("-") )

{//单击-号按钮

result = result - Integer.parseInt(answer.getText());

answer.setText(result+"");//在文本框上显示相加的结果

} else if( lastOP.equals("*") )

{//单击*号按钮

result = result * Integer.parseInt(answer.getText());

answer.setText(result+""); //文本框设为0

} else if( lastOP.equals("/") )

{//单击/号按钮

if(answer.getText().equals("0")) answer.setText("除数不能为0"); //文本框设为0

else{

result = result / Integer.parseInt(answer.getText());

answer.setText(result+""); //文本框设为0

}

}

isOK = true; //已经经过运算了

lastOP = op; //记下本次操作

}

//关闭窗口,触发此方法

public void windowClosing( WindowEvent ev )

{

System.exit(0); //退出程序

}

}

分享标题:java一对兔子代码注释,兔子问题java完整代码
浏览地址:https://www.cdcxhl.com/article44/dsiegee.html

成都网站建设公司_创新互联,为您提供做网站用户体验电子商务企业网站制作网站维护

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

搜索引擎优化