如题,输入大于40的时候每次都出错
下面是代码
- import java.util.ArrayList;
- import java.util.Scanner;
- class Rabbit //创建兔子类
- {
- int age; //成员变量:兔子年龄
-
- public Rabbit() //构造函数
- {
- age=0;//初始化兔子的年龄
- }
-
- public void setAge()//成员函数:设置兔子的年龄
- {
- age++;//年龄递增
- }
-
- public int getAge()//成员函数:获取兔子的年龄
- {
- return age;
- }
- public Rabbit born()//成员函数:兔子出生
- {
- return new Rabbit();//创建一个兔子对象并返回
- }
- }
- public class Test1 {
- public static void main(String[] args)
- {
- Scanner sc=new Scanner(System.in);//创建系统输入流对象
- String temp;
- int monthNum;
- boolean run=true;
- while(run)
- {
- System.out.println("请输入月份或exit退出:");
- temp=sc.nextLine();
- if(temp.trim().equals("exit"))//判断去除首尾空格的字符是否是exit,如果是就结束程序
- {
- System.out.println("系统退出了");
- System.exit(0);
- }
- else //否则把输入的字符去除首尾空格并转换为int类型,调用getNum函数并将转换后的值传入
- {
- monthNum=Integer.parseInt(temp.trim());
- System.out.println(getNum(monthNum)); //输出结果
- }
- }
- }
- public static int getNum(int m) //定义一个获取兔子数量的函数
- {
- int num=1;
- ArrayList rabbitArray=new ArrayList();//创建兔子数组
- rabbitArray.add(new Rabbit()); //向数组内添加一对兔子
- for(int x=1; x<=m; x++) //定义外层for循环,条件是x的值要小于传入的月数值
- {
- for(int y=0; y < rabbitArray.size(); y++)//定义内层for循环,条件是y的值要小于数组的长度
- {
- ((Rabbit) rabbitArray.get(y)).setAge();//每循环一次就将数组中的兔子的年龄都+1
- if(((Rabbit) rabbitArray.get(y)).getAge() >= 3)//如果兔子的年龄>=3那就再给数组中添加一对兔子
- rabbitArray.add(((Rabbit) rabbitArray.get(y)).born());
- }
- }
- num=rabbitArray.size();//循环结束后数组中的成员个数就是兔子的数量
- return num; //返回兔子数量
- }
- }
复制代码 |