【问题标题】:Print Fibonacci number打印斐波那契数
【发布时间】:2013-04-09 07:32:16
【问题描述】:

我的程序应该根据用户输入的内容输出一个斐波那契数(例如,如果他们输入 7,程序将输出 13)。这部分有效。我遇到问题的部分是程序检查以确保用户输入的数字是正数且小于或等于 70。它应该再次要求用户输入,但它输出“Fibonacci #-1为 0" 并停止。这是我的代码:

import java.util.Scanner;

public class scalvert_Fibonacci
{
public static void main ( String args[] ) 
{
    Scanner input = new Scanner ( System.in );

    int sum = 0;
    int num;
    int f1 = 0, f2 = 0, f3 = 1;

    System.out.print("Which Fibonacci number would you like? ");
    num = input.nextInt(); 

    if (num == 0)
    return 0;

    else if (num == 1)
    return 1;

    while (num < 0 || num > 70)
    {
        System.out.print("Which Fibonacci number would you like? ");
        num = input.nextInt(); 
    }

        for(int i = 1; i <= num; i++)
        {
                f1 = f2;
                f2 = f3;
                f3 = f1 + f2;
        }
        System.out.printf("Fibonacci #%d is %d\n",num, f2);
}
}

【问题讨论】:

  • 您的代码还有其他问题,当返回类型为“void”时,您不应返回任何值。你能编译这个吗?

标签: java numbers fibonacci


【解决方案1】:

使用它可能会解决您的问题

if(num<0 || num>70)
{
    //ask a number again
}
else
{
    //calculate
}

or use this

if( 0 < num < 71 )
{
    //calculate
}
else
{
     //ask for a valid number
}

【讨论】:

  • 这确实有效,但是在我输入了两次无效数字后,程序结束了。另外,如果我输入一个无效的数字,然后输入一个有效的数字,它仍然没有输出。
  • 在你的 if 中使用 return with 可能 解决你的问题..(我不确定)..进一步你可以去检查有效输入的方式.
  • 放置 if (num==0) return 0;内?
  • 这给了我原来的问题
【解决方案2】:

我想通了。

while(num < 0 || num > 70)
    {
        System.out.print("Which Fibonacci number would you like? ");
        num = input.nextInt(); 
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-04
    • 2012-02-15
    • 2013-04-11
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    相关资源
    最近更新 更多