2017-03-15 4 views
1

J'ai des difficultés avec mes devoirs ... "Écrivez un programme qui demandera à l'utilisateur deux nombres: Lower et Upper Votre programme devrait imprimer tous les nombres de Fibonacci dans la gamme de bas en haut et la somme de tous les nombres pairs de la série Fibonacci. " Je ne sais pas comment obtenir les chiffres entre les deux entrées. Maintenant, il donne juste des chiffres de zéro à ...?Numéros de Fibonacci entre deux entrées

Voici ce que j'ai jusqu'à présent:

public static void main(String[] args) 
{ 
    Scanner scr = new Scanner(System.in); 
    System.out.println ("Enter lower bound:"); 
    int lower = Integer.parseInt(scr.nextLine()); 
    System.out.println ("Enter upper bound:"); 
    int upper = Integer.parseInt(scr.nextLine()); 

    int fiboCounter = 1; 
    int first = 0; 
    int second = 1; 
    int fibo = 0; 
    int oddTotal = 1; 
    System.out.println("The fibonacci numbers between "); 
    while(fiboCounter < upper) 
    { 
     fibo= first + second; 
     first = second; 
     second = fibo; 
     if(fibo % 2 == 0) 
      oddTotal = oddTotal + fibo; 

     System.out.print(" "+ fibo+ " "); 
     fiboCounter++; 
    } 
    System.out.println(); 
    System.out.println("Total of even Fibos: "+ oddTotal); 
} 
+2

Tout d'abord, calculez vos numéros de Fibonacci comme d'habitude, arrêtez lorsque vous dépassez la limite supérieure (en utilisant la boucle). À l'intérieur de la boucle, en plus de calculer le nombre de Fibonacci, imprimez seulement s'il est plus grand que plus bas. – DVT

Répondre

0

Vous pouvez simplement vérifier si le nombre calculé est assez grand:

public static void main(String[] args) { 
    Scanner scr = new Scanner(System.in); 
    System.out.println ("Enter lower bound:"); 
    int lower = Integer.parseInt(scr.nextLine()); 
    System.out.println ("Enter upper bound:"); 
    int upper = Integer.parseInt(scr.nextLine()); 

    // This is how you can initialize multiple variables of the same type with the same value. 
    int fiboCounter, second, oddTotal = 1; 
    int first, fibo = 0; 

    System.out.println("The fibonacci numbers between "); 
    while(fiboCounter < upper) { 
     fibo= first + second; 
     first= second; 
     second=fibo; 
     if(fibo%2==0) oddTotal=oddTotal+fibo; 

     // Just check if its high enough 
     if(fibo > lower) { 
      System.out.print(" "+ fibo + " "); 
     } 
     fiboCounter++; 
    } 

    System.out.println("\nTotal of even Fibos: "+ oddTotal); 
    // The \n is just the same as System.out.println() 

    // You probably want to close the scanner afterwards 
    scanner.close(); 
} 

Je fixe un peu le code et fait un peu plus lisible.