2014-02-20 3 views
0

У меня есть задача написать программу, используя последовательность фибоначчи и помещая их в массивы. Он работает, получая пользовательский ввод (сколько номеров в последовательности, которую пользователь хочет распечатать), а затем он реализует это в массив и выводит последовательность с количеством «номеров», введенных пользователем. Как я пропустил 2 недели занятий, я посмотрел онлайн о том, как написать эту программу, и нашел видео, в котором был написан следующий код. Поэтому я не беру кредит на следующий код, я просто использую его в качестве примера.Последовательность Fibonacci с массивами

Во всяком случае вот код:

public class Fibonacci 
{ 
    public static void main(String[] args) 
    { 
     int numToPrint; 
     //how many numbers to print out 

     Scanner scan = new Scanner(System.in); 
     System.out.println("Hvað viltu prenta út margar tölur úr Fibonacci röðinni?"); 
     numToPrint = scan.nextInt(); 
     scan.close(); 

     //prints out the first 2 numbers 
     int nuverandiT = 1; 
     int lokaT = 0; 
     System.out.println(lokaT); 
     System.out.println(nuverandiT); 

     //prints out the rest of the sequence 
     int lokaLokaT; 
     for(int i = 2; i < numToPrint; i++) 
     { 
      lokaLokaT = lokaT; 
      lokaT = nuverandiT; 
      nuverandiT = lokaLokaT + lokaT; 
      System.out.println(nuverandiT); 
     } 
    } 
} 

Теперь это печатает последовательность Фибоначчи с ввода от пользователя, но я не совсем уверен, как сделать его распечатать в массив. Кто-нибудь из вас знает, как это сделать?

+0

Что вы подразумеваете под печатью в массив? Вы хотите, чтобы значения, хранящиеся в массиве, вместо того, чтобы печатать их в консоли? Или вам нужны значения, напечатанные на консоли, но в формате «[2, 3, 5, 8]»? – mdewitt

ответ

1

Вы должны создать массив, например:

int[] simpleArray; 
simpleArray = new int[numToPrint]; 

На месте

System.out.println(lokaT); 
System.out.println(nuverandiT); 

Put:

simpleArray[0] = lokaT; 
simpleArray[1] = nuverandiT; 

И внутри цикла, вы ставите вместо этого :

System.out.println(nuverandiT); 

Это: simpleArray [i] = nuverandiT;

+0

В этом случае вы не хотите инициализировать массив как 'new int [numToPrint + 2]'? – Nathan

+1

предположим, что numToPrint = 10, если вы инициализируете новый int [numToPrint], у вас будет 10 позиций массива (от 0 до 9). Цикл for до тех пор, пока i

+0

. Ага, моя ошибка. – Nathan

0

Я предполагаю, что когда вы говорите «распечатывать в массив», вы действительно имеете в виду, что хотите просто сохранить значения в массиве. В этом случае,

Прежде чем ваш цикл:

int[] array = new int[numToPrint]; 

И внутри ваш цикл:

array[i-2] = nuverandiT; 

Если вы хотите напечатать число раз они были сохранены в массиве, вы, вероятно, захотите пропустить его и напечатать таким же образом, обратившись к элементам по индексу. Для получения дополнительной информации, java-документация очень хороша. Рекомендую прочитать на arrays и counted loops.

+1

Вы можете использовать 'Arrays.toString (array)' для печати массива. Нет необходимости в дополнительном цикле. – mdewitt

+0

Также хороший вариант, в зависимости от того, насколько вы придирчивы к форматированию. – Nathan

+0

Спасибо за отзыв :) – Birgir

Смежные вопросы