System.out.println("是否需要继续输入打印的数:是请输入-1,推出请输入-2");
Scanner m=new Scanner(System.in);
int n=m.nextInt();
if(n==-1)
flag=true;
else
break;
}*/
}
private static int getNum() {
boolean judge = true; //定义一个Boolean类型的值来判断输入值的合法性
int result = 0; //定义输入值的初值
while (judge) {
Scanner scan = new Scanner(System.in); //键盘输入
System.out.println("输入一个大于0的整数:");
try {
result = Integer.parseInt(scan.nextLine()); //将键盘输入的值赋给result
if (result < 0) { //判断result是否小于0,小于0则重新输入
throw new Exception("输入的值必须大于0,请从新输入");
}
judge = false; //输入的数符合要求则跳出循环,进行转换计算
} catch (Exception e) {
System.out.println("输入值非法,请从新输入"); //输入值非法则需要从新输入
}
}
return result;
}
private static void outTime(int time) {
int s = 0,m = 0,h = 0, d = 0; //定义秒、分、时和天的初值
if (time<0)
return;
if (time<60) { //输入值小于一分钟
s = time;
} else if (time>=60&&time<60*60) { //输入值小于一小时
m = time/60;
s = time%60;
} else if (time>=60*60&&time<24*60*60) { //输入值小于一天
h = time/(60*60);
m = time%(60*60)/60;
s = time%(60*60)%60;
} else { //输入值大于一天
d = time/(24*60*60);
h = time%(24*60*60)/(60*60);
m = time % (24*60*60)%(60*60)/60;
s = time % (24*60*60) % (60*60) % 60;
}
out(d, h, m, s); //获得转换后的天数、小时、分钟和秒数的值然后将其传出
}
private static void out(int d, int h, int m, int s) { //判断为0的秒数、分钟、小时、天数不输出
String str = "";
if (d != 0) {
str += d + "天";
}
if (h != 0) {
str += h + "小时";
}
if (m != 0) {
str += m + "分钟";
}
if (s != 0) {
str += s + "秒";
}
System.out.println(str); //输出最终结果
}
int m = 0 ; //用来接收用户要求的项数
//接受用户的输入
m = getN();
Print(m);
}
static void Print(int m)
{
int X = 1;
int Y = 1;
int Z= 0;
if(m==1||m==2)
{
System.out.println("你要求斐波那契数列第"+m+"列的值为:->1");
}
else
{
// 计算N>2的项的斐波那契数列的值
for (int i = 1; i <=m-2; i++)
{
//用最简单的算法实现。
Z = X+Y;
X = Y;
Y = Z;
}
System.out.println("你要求斐波那契数列第"+m+"列的值为->"+Z);
}
}
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);
n=sc.nextInt();
}
return n;