我在我的Intro类的Fibonacci数字程序上遇到了麻烦。只有当我按升序输入数字时,它才能工作。
目标:必须使用while循环,必须检测数字是否是fibonacci数,并且必须检测序列中数字的顺序。如果它不是斐波纳契数,它必须这样说,并告诉它是什么数字之间。程序还必须一直询问输入号,直到用户退出为止。
如何输出的例子:
Please input a number for analysis >> 2
2 is a fibonacci number whose order in the sequence is 4
Please input a number for analysis >> 53
53 is not a fibonacci number
However, it lies between the Fibonacci numbers 34 (order:10) and 55 (order:11)我的问题:只有当我按升序输入数字时,程序才能工作。例如,如果我输入5,它告诉我这是一个带有seq的假数字。当我输入2时,它说它不是一个假数,而是介于斐波那契数3(顺序:5)和5(顺序: 6 )之间。当我键入55,它告诉我这是一个谎言的数字。但是,如果不显示不正确的输入,我就不能输入低于55的任何数字。
我认为问题在于其他的if语句,可能是(错误的!= testnum)。或者是伯爵?有人能告诉我问题可能在哪里吗?
import java.util.Scanner;
public class Fibonacci
{
public Fibonacci()
{
int fibhigh = 1;
int fiblow = 0;
int count = 2;
int fibnext = 0;
Scanner input = new Scanner(System.in);
boolean quit = false;
System.out.println("Welcome to Fibonacci Sequence Dectector");
while(!false)
{
System.out.print("Please input a number for analysis >> ");
int testnum = input.nextInt();
if(testnum < 0)
{
System.out.println("Please enter a positive number");
continue;
}
while(fibnext < testnum)
{
fibnext = fibhigh + fiblow;
fiblow = fibhigh;
fibhigh = fibnext;
count++;
}
if(fibnext == testnum)
{
System.out.println(testnum + " is a fibonacci number whose order in the sequence is " + count);
}
else if(fibnext != testnum) System.out.println(testnum + " is not a fibonacci number \nHowever, it lies between the Fibonacci numbers " + fiblow + " (order:" + (count - 1) + ") and " + fibhigh + " (order:" + count + ")");
}
}
}发布于 2014-11-01 23:28:41
您从不重置变量int fibhigh = 1, fiblow = 0, count = 2, fibnext = 0;。
您应该移动这个代码片段。
int fibhigh = 1;
int fiblow = 0;
int count = 2;
int fibnext = 0;在循环开始时:
while (!false) { }发布于 2014-11-01 23:24:33
你从来不清理纤维,纤维和纤维。这意味着你每次都会和最高的数字做比较。在用户输入数据之前,应该将值设置为原始数字。
https://stackoverflow.com/questions/26694220
复制相似问题