Java fibonacci - 从数组中查找用户输入

标签 java fibonacci

我的斐波那契代码遇到了几个问题。如果我想找到数组(输入)中数字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/

相关文章:

java - 如何禁用/删除 Eclipse Graphiti 编辑器的调色板?

python - 如何找到最近的斐波那契数列?

java - NumberFormatException:无限或 NaN

java - 为什么我的java程序变得越来越慢?

performance - 斐波那契数列算法

java - 与额外列的多对多关联

java - 未提取查询参数 - JAX-RS 和 Jersey

java - 如何将 jar 依赖项项目中的资源包含在 war 文件中

java - 如果删除空格,DateTimeFormatter 解析带有可选时间部分的字符串将失败

algorithm - 需要帮助了解如何减少斐波那契堆中的键