2013-04-09 169 views
0

我的程序应该根据用户输入的内容输出一个斐波那契数(例如,如果他们输入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); 
} 
} 
+0

您的代码还有其他问题,当返回类型为“void”时,您不应返回任何值。你能编译这个吗? – JackSparrow 2013-04-09 07:58:02

回答

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 2013-04-09 07:50:39

+0

使用返回与您的如果,**可能**解决您的问题..(我不知道它)..进一步,你可以去边检查有效的输入。 – Bhavik 2013-04-09 07:54:12

+0

将if(num == 0)返回0;中? – user1858350 2013-04-09 07:55:24

0

我想通了。

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