2013-04-09 2 views
0

Моя программа должна выводить число Фибоначчи на основании введенного пользователем (например, если они войдут в 7, программа выведет 13). Эта часть работает. Часть, с которой у меня возникают проблемы, - это когда программа проверяет, чтобы номер, введенный пользователем, был положительным и меньше или равным 70. Он должен снова запросить пользователя для ввода, но вместо этого он выводит «Фибоначчи № -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); 
} 
} 
+0

Существуют и другие проблемы с вашим кодом, вы не должны возвращать какое-либо значение, когда тип возврата является «void». Вы можете скомпилировать это? – JackSparrow

ответ

0

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

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 
} 
+0

Это действительно сработало, однако после того, как я дважды вводил неверный номер, он заканчивает программу. Кроме того, если я ввожу недопустимое число, то допустимое значение, оно все равно заканчивается без вывода. – user1858350

+0

с использованием return with in your if, ** возможно ** решить вашу проблему .. (я не уверен в этом). Далее вы можете перейти на боковые пути, которые проверяют правильные входные данные. – Bhavik

+0

Место if (num == 0) return 0; в? – user1858350

0

Я понял это.

while(num < 0 || num > 70) 
    { 
     System.out.print("Which Fibonacci number would you like? "); 
     num = input.nextInt(); 
    } 
Смежные вопросы