java——IO键盘输入



------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

每天进步一点点,以下的是我基础测试时的试题分析总结。


第二题:求斐波那契数列第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;
	}
}

这样子就可以每次回车输入一个数字。

记录下学习生活中每次遇到的问题

你可能感兴趣的:(java)