2015-09-21 3 views
1

Я хочу, чтобы эта программа взяла список массива «max», который создается пользователем. Затем программа использует последовательность Фибоначчи для хранения всех чисел Фибоначчи в arraylist, которые меньше, чем arraylist «max», который создается пользовательским вводом.Basic arraylist с использованием последовательности Фибоначчи

import java.util.*; 
import javax.swing.*; 

public class FibonacciArrayList { 

public static ArrayList<Integer> Fibonacci (Integer Max){ 

    ArrayList<Integer> A = new ArrayList<Integer>(); 
    int n0; 
    int n1; 
    int n2; 

    for(int i= 0; i = max; i++){ 
    n2= n1 + n0; 
    system.out.println(n2); 
    n0=n1; 
    n1=n2; 

    return A; 
} 


    public static void main (String[] arg){ 
    Integer max; 
    String Title = "Fibonacci ArryList"; 
    String data = JOptionPane.showInputDialog(null, "Enter the upper bound", Title, 1); 
    max = new Integer(data); 
    ArrayList<Integer> A = Fibonacci(max); 
    System.out.println("There are " + A.size()+ " Fibonacci numbers less than "+max); 

    } 

} 
+0

Установите n0 = 0, ваш n1 = 1 ... прямо сейчас они даже не имеют значения. Кроме того, это System.out.println (n2), с капиталом S. Вам нужно добавить числа в список массивов с помощью A.add (0). Похоже, вы добавляете max целые числа в список массивов, но вместо этого это звучит так, как будто вы хотели добавлять только целые числа, которые были меньше макс. – Sesame

ответ

0

Пробуйте этот код.

import java.util.*; 
import javax.swing.*; 

public class FibonacciArrayList { 

public static ArrayList<Integer> Fibonacci (int Max){ 

    ArrayList<Integer> A = new ArrayList<Integer>(); 
    int n0=0; 
    int n1=1; 
    int n2; 
    if(Max==0){ 

    } 
    else if(Max==1) 
    { 
     System.out.println(n0); 
     A.add(n0); 
    } 
    else if(Max==2) 
    { 
     System.out.println(n0); 
     System.out.println(n1); 
     A.add(n0); 
     A.add(n1); 
    } 

    else{ 
     System.out.println(n0); 
     System.out.println(n1); 
     A.add(n0); 
     A.add(n1); 
    for(int i= 2; i <=Max; i++){ 
    n2= n1 + n0; 
    A.add(n2); 
    System.out.println(n2); 
    n0=n1; 
    n1=n2; 
    } 
    } 
    return A; 
} 


    public static void main (String[] arg){ 
    int max; 
    String Title = "Fibonacci ArryList"; 
    String data = JOptionPane.showInputDialog(null, "Enter the upper bound", Title, 1); 
    max = Integer.parseInt(data); 
    ArrayList<Integer> A = Fibonacci(max); 
    System.out.println("There are " + A.size()+ " Fibonacci numbers less than "+max); 

    } 

} 
1

Изменена и упрощена логика до функции Fibonacci. Добавлены комментарии, которые помогут вам понять изменения.

public static ArrayList<Integer> Fibonacci (Integer max) { //Instead of 'Max' use 'max' 
    ArrayList<Integer> A = new ArrayList<Integer>(); 

    //Initialize value of n0, n1 and n2 
    int n0=0; 
    int n1=1; 
    int n2=1; 

    //Handling the base conditions 
    if(max == 0) return A; 

    if(max == 1) { 
     A.add(n0); 
     return A; 
    } 

    //Add first 2 elements in the array 
    A.add(n0); 
    A.add(n1); 

    //A 'while' loop will be more suitable to what you want to achieve 
    while(n2 < max) { 
     A.add(n2); //Instead of printing the values, add them into ArrayList A 
     n0=n1; 
     n1=n2; 
     n2 = n1 + n0; 
    } //Add a closing bracket for the 'for' loop 

    return A; 
} 
Смежные вопросы