------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
每天进步一点点,以下的是我基础测试时的试题分析总结。
第二题:求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
个人认为本题的难点在于如何从键盘接收一个两位以上的整数,而不是被当做多个字符对待。开始的时候做出来只能输入0-9的数据,当超过两位数时虚拟机会把它当做两个字符对待,这就在调试程序时候发现了问题所在,我只想到了用逐行读取然后简析为整数的方式来解决,大家可以集思广益(我也是初学者)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test2 {
//此处提示需要抛出异常,但是键盘输入时是如何造成异常的呢?希望可以得到老师的帮助
public static void main(String[] args) throws IOException {
//定义一个字符缓冲流,从键盘读取数字
BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
//定义一个循环,以便功能的重复执行
while(true)
{
//给用户功能提示
System.out.println("请输入一个小于30的整数:");
//将键盘读入的一行数据(回车键之前的所有数字算作一个数字)简析成一个十进制整数
int ch=Integer.parseInt(bfr.readLine());
//根据提示要求n<30,给输入参数设置定义域
if(ch>30||ch<1)
{
System.out.println("请重新输入");
//如果输入数据超出设置范围,结束本次循环,继续下次循环
continue;
}
//调用getFunction方法求斐波那契数列第n项并输出。
System.out.println("斐波那契数列第"+ch+"项为:"+getFunction(ch));
}
}
//定义一个方法,实现求斐波那契数列第n项的功能
public static int getFunction(int x)
{
//设置初始值
if (x==1)
{
return 1;
}
//设置初始值
if (x==2)
{
return 1;
}
//递归调用
int temp=getFunction(x-1)+getFunction(x-2);
return temp;
}
}
这样子就可以每次回车输入一个数字。
记录下学习生活中每次遇到的问题