黑马入学基础测试(三)求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55

  1. .获得用户的输入
  2. 计算     
  3. 3打印就行了。

 

这里用到了java.util.Scanner   具体API 

我就觉得不常用。解决问题就ok了。注意的是:他们按照流体的方式读取。而不是刻意反复读取

自己写的代码:

package com.itheima;



import java.util.Scanner;



public class Test3

{

    /**

     * 3.求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55

     * 

     * @author zhulang

     * @param args

     */

    public static void main(String[] args)

    {

        /*

         * 1.获得用户的输入

         * 2.计算

         * 3.打印就行了。

         */

        int fibX = 1;

        int fibY = 1;

        int fibZ= 0;

        int n = 0 ; //用来接收用户要求的项数        

        //接受用户的输入

        n = getN();    

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

        {

            System.out.println("你要求斐波那契数列第"+n+"列的值为:->1");

        }

        else

        {

            // 计算N>2的项的斐波那契数列的值

            for (int i = 1; i <=n-2; i++)

            {

                //用最简单的算法实现。

                fibZ = fibX+fibY;

                fibX = fibY;

                fibY = fibZ;

            }

            System.out.println("你要求斐波那契数列第"+n+"列的值为->"+fibZ);

        }

        

    }

    

    /**

     * 接受用户正确输入用户  . 这里我查资料查了一会儿。java.util.Scanner我觉得不常用。要是不是因为黑马。我几乎不会

     * @return 用户的正确输入

     */

     private static int getN()

    {

        int n;

        System.out.println("提示:请输入求斐波那契数列第n项的值。");    

        Scanner sc = new Scanner(System.in);

        //让用户反复输入。直到输入成功为止

        while (!sc.hasNextInt()|| (n=sc.nextInt())>=30)

        {

            

                System.out.println("输入错误:请输入求斐波那契数列小于第30项的正整数。");

                sc = new Scanner(System.in);            

        }    

        return n;

        

    }

}

你可能感兴趣的:(测试)