Распечатать число Фибоначчи

Моя программа должна выводить число Фибоначчи на основе того, что ввел пользователь (например, если он введет 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);
}
}

person user1858350    schedule 09.04.2013    source источник
comment
Есть и другие проблемы с вашим кодом, вы не должны возвращать какое-либо значение, если тип возвращаемого значения недействителен. Вы можете это скомпилировать?   -  person JackSparrow    schedule 09.04.2013


Ответы (2)


использование этого может решить вашу проблему

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
}
person Bhavik    schedule 09.04.2013
comment
Это сработало, однако после того, как я дважды ввожу недопустимый номер, программа завершает работу. Кроме того, если я ввожу недопустимый номер, а затем правильный, он все равно заканчивается без вывода. - person user1858350; 09.04.2013
comment
используя return с вашим if, может решить вашу проблему.. (я не уверен в этом).. Далее вы можете пойти по другому пути, который проверяет допустимые входные данные. - person Bhavik; 09.04.2013
comment
Поместите if (num==0) return 0; в пределах? - person user1858350; 09.04.2013
comment
Это дало мне исходную проблему - person user1858350; 09.04.2013

Я понял.

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