解决方案 »

  1.   

    不是什么问题。
    System.in是键盘输入,没必要关闭。Scanner 可以调用close方法
      

  2.   

    我咋感觉lz分析不对啊,这应该是个斐波拉契数列啊~f(n) = f(n-1) + f(n-2) n >2
    f(1) = f(2) = 1
      

  3.   

    程序改了下,又碰到个问题/* 有一对兔子,从出生后第3个月起每个月都生一对兔子,
     * 小兔子长到第三个月后每个月又生一对兔子,
     * 假如兔子都不死,问每个月的兔子总对数为多少? */
    /*
     * 分析一:
     * 本月兔子数量等于前两月兔子之和,满足斐波那契数列,即:f(n) = f(n-1)+f(n-2)(n>2).
     * 此方法是通过数学分析的方式得出结果,再用程序表达出来。
     */import java.util.Scanner;
    public class Tuzi {
    public static void main(String[] args)
    {
    int sum = 0;                           //兔子总数
      int mouth = 0;
    Scanner in = new Scanner(System.in);
            do{ 
         System.out.println("请输入需要查询的月份,esc结束查询");
             mouth = in.nextInt();
            // String esc = in.nextLine();        //输入esc的时候,被mouth读取,然后就报错,这里怎么解决?
            // if(esc == "esc")
            // break;
        if(mouth>0 && mouth<3)
        {
         sum = 1;
         System.out.println("总共有"+sum+"对兔子");
        }
        else if(mouth>=3)
        {
         int[] a= new int[2];
         a[0] = 1;
         a[1] = 1;
         for(int i = 3;i<=mouth;i++)
         {
         sum = a[0] + a[1];
         a[0] = a[1];
         a[1] = sum;
         }
         System.out.println("总共有"+sum+"对兔子");
        }
        else
        {
         System.out.println("错误的月份");
        }
            }while(true);
        //    System.out.println("结束查询");
    }
    }程序里的查询是循环的,我想输入esc来跳出循环来结束查询,可是输esc的时候被int mouth读取,然后就是报错了,请教各位大大怎么解决?