A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田磊阳   /  2013-4-9 23:38  /  14648 人查看  /  200 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

试试做不做的出来
回复 使用道具 举报
看看`````
回复 使用道具 举报
  1. import java.util.Scanner;
  2. class TestSum
  3. {
  4.         public static void main(String[] args)
  5.         {   
  6.                 Scanner in = new Scanner(System.in);

  7.                 //向系统中输入任意一个年数,并赋值给变量n
  8.                 System.out.println("请输入一个年数:");
  9.                 int n = in.nextInt();

  10.                 //打印输入的年数所对应的牛的总头数
  11.                 System.out.println("到第"+n+"年,总共有牛"+getSum(n)+"头");
  12.         }

  13.         //此方法用来计算所输入年数的总的牛头数
  14.         public static int getSum(int year)
  15.         {
  16.                 //当输入的年数小于零时,返回-1,表示输入有误。
  17.                 if(year<0)
  18.                 {
  19.                         System.out.println("输入的数据不符合要求!");
  20.                         return -1;
  21.                 }

  22.                 //当输入的年数小于或者等于3时,返回1.因为又题意可知,三年以后,才会有新的牛出生;因此,此时牛的总头数为1.
  23.                 else if(year<=3)
  24.                         return 1;
  25.                 //下面是年数大于3的情况
  26.                 else
  27.                 {
  28.                         //最开始时,有一头牛,所以总数sum初始化为1
  29.                         int sum = 1;

  30.                         //定义一个数组来存放每一年新出生的牛,因为从第四年开始才有新牛出生,所以此数组中存储的第一个元素是从第四年开始的,
  31.                         //也即数组的长度为year-3(因为数组角标是从0开始的)。
  32.                         int[] arr = new int[year-3];
  33.                         for(int i=0;i<arr.length;i++)
  34.                         {
  35.                                 //因为是每一头牛都在三年后生产一头小牛,并且以后此牛会每一年生一头小牛;故从第四年起,
  36.                                 //每一年出生的小牛数都等于上一年出生的小牛数加上三年前的那一年出生的小牛数
  37.                                 //(如:第七年出生的小牛数=第六年出生的小牛数+第四年出生的小牛数).这一步很关键!!!
  38.                                 if(i>=3)
  39.                                         arr[i] = arr[i-1]+ arr[i-3];

  40.                                 //当年数为4、5、6时,每年只有一头牛出生
  41.                                 else
  42.                                         arr[i]= 1;
  43.                                 //将每一年的牛数叠加起来
  44.                                 sum += arr[i];

  45.                         }
  46.                
  47.                         //返回输入年数所对应的总牛数
  48.                         return sum;
  49.                 }
  50.         }
  51. }
复制代码
请问一下,我写的这个对吗?
回复 使用道具 举报
来看看题目,
回复 使用道具 举报
什么东东。。。
回复 使用道具 举报
看看情况
回复 使用道具 举报
什么题目
回复 使用道具 举报
{:soso_e142:}开奖时间是啥时候
回复 使用道具 举报
来看看。
回复 使用道具 举报
本帖最后由 施家雄 于 2013-4-10 23:14 编辑

查了一些资料,再加上自己的一些想法,写出来的。
  1. import java.util.ArrayList;
  2. import java.util.Scanner;
  3. /*
  4. * 主要要定义一个可变数组来存储变化的牛的数量。要查看第几年有多少牛,从键盘中输入一个年数
  5. * 就能知道第几年有几头牛了。
  6. *
  7. * */
  8. public class CowTest {
  9. //定义年龄为0以后每年加1
  10. private int age = 0;
  11. //定义方法,判断过了3年就能生小牛
  12. public boolean isCreatSmallCow(){
  13.    return (age >= 3)?true:false;
  14. }
  15. //过一年age自增
  16. public void addYear(){
  17.    age++;
  18. }

  19. public static void main(String[] args) {
  20.         
  21.         //定义一个可变数组,对每年的出生的牛加以前的牛保存起来
  22.    ArrayList<CowTest> list = new ArrayList<CowTest>();
  23.    
  24.    //这是第一头牛
  25.    list.add(new CowTest());
  26.    
  27.    System.out.print("请输入这是第几年:");
  28.    //定义一个键盘
  29.    Scanner input=new Scanner(System.in);
  30.    
  31.    //从键盘中输入年数
  32.    int yearsCount=0;
  33.    try{
  34.    yearsCount = input.nextInt();
  35.    }catch(Exception e)
  36.    {
  37.      System.out.println("你输入的数字不合法!");
  38.    }
  39.    //因为不知道过了几年,所以定义循环语句
  40.    for(int i=1;i<=yearsCount;i++){
  41.            int rowNum = list.size();     //可变数组中的牛的数量
  42.            for(int j = 0; j<rowNum; j++){
  43.                    CowTest cow = list.get(j);
  44.                    cow.addYear();             //过一年就自增
  45.                    if(cow.isCreatSmallCow()){    //若是第三年就有小牛出生
  46.                            list.add(new CowTest());
  47.      }
  48.     }
  49.    }
  50.   
  51.    System.out.println(yearsCount+"年后总共有"+list.size()+"头牛。");
  52. }
  53. }

复制代码

点评

请在答题贴解答  发表于 2013-4-11 12:45
回复 使用道具 举报
来看看!
回复 使用道具 举报
余勇 来自手机 中级黑马 2013-4-11 00:59:58
132#
看看,练习
回复 使用道具 举报
回复一下,看看是什么
回复 使用道具 举报
{:soso_e113:}
回复 使用道具 举报
看看啥啊
回复 使用道具 举报
看看是什么东西啊
回复 使用道具 举报
看一看啊看一看
回复 使用道具 举报

瞧一瞧。。。
回复 使用道具 举报
答题成长!
回复 使用道具 举报
今天才看到这个题目.....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马