我的斐波那契代码遇到了几个问题。如果我想找到数组(输入)中数字5的位置,系统说它的位置是5,但它应该说6?另外,如果我输入一个不在数组中的数字,系统会说它是在位置 20 中找到的(示例输入 200)。系统应该说“未找到”
int totalFibos=20;
int fibs[] = new int[totalFibos];
int a=0;
int b=1;
int fib=0;
fibs[0]=0;
fibs[1]=1;
int fibCounter=2;
while(fibCounter<totalFibos)
{
fib=a+b;
a=b;
b=fib;
fibs[fibCounter]=fib;
fibCounter++;
}
System.out.println("\n\nThe first "+ totalFibos + " fibonacci numbers are: ");
int i=0;
while(i<totalFibos)
{
System.out.print(fibs[i]+" ");
i=i+1;
}
System.out.println();
int userInput=0;
i=0;
Scanner sc= new Scanner(System.in);
int found=0;
while(userInput!=-1)
{
System.out.print("Enter a number to search,(enter -1 to end the search): ");
userInput= sc.nextInt();
while (i<totalFibos)
{
if(userInput==fibs[i])
{
found=1;
break;
}
i++;
}
if(found==1)
System.out.println("The number: " + userInput + " is found at location: "+ i++);
else if (found==0)
System.out.println("The number: "+ userInput + " is not found");
}
if(userInput==-1)
System.out.println("\nThanks");
}
}
最佳答案
请注意,您有“;”在 if 语句后签名
if(userInput==fibs[i]);
{
found=1;
break;
}
这就是为什么总是执行 {} 中的表达式的原因。 去除 ”;”并添加 i++; while 循环内的某处才能使其工作。
更新: 每次输入后还要重置计数器和结果。这应该是 while 循环中的第一件事:
found = 0;
i = 0;
关于Java fibonacci - 从数组中查找用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42958787/