Найти первые N пятиугольных чисел - PullRequest
4 голосов
/ 06 сентября 2011

Я должен найти первые N [pentagonal numbers][1] из 1-100 и отобразить их 10 в каждой строке Я также должен использовать метод getPentagonalNumber(int n); именно поэтому он и есть.

Вот мой код.

package chapter_5;

public class Five_One {

    public static void main(String[] args) {
        int n = 0;
        int numPerLine = 10;
        for ( n = 0;  n < 11;  n ++)           
    }

    public static int getPentagonalNumber(int n) {
        int formula = n * (3 * n - 1) / 2;
        while ( formula < )
    }
}

Ответы [ 4 ]

3 голосов
/ 07 сентября 2011

Это долгий путь.Давайте разберем это здесь с лучшим подходом.

Давайте создадим метод, который возвращает заданное количество пятиугольных чисел (мы будем использовать массив.) Это позволяет нам использовать метод позже, если возможно есть дополнительный кредиттоже!

наша подпись выглядит так:

class Jason {

    public static void main(String[] args) {
        // don't mix the calc routine and printing...
        int[] pents = getPentagonals(100); // calcs and stores the first 100 values

        final int numPerLine = 10;
        for(int i = 0; i < pents.length; i++) {
            System.out.print(pents[i]);
            System.out.print(" ");
            if(i % numPerLine == numPerLine - 1) System.out.println("");
        }
    }

    static int[] getPentagonals(int n) {
        int[] pents = new int[n];
        // calculate pents
        for(int i = 0; i < pents.length; i++) {
            // calculate the ith pentagonal here (assuming the 0th is first)
            // store it in pent[i]
        }
        return pents;
    }

}
1 голос
/ 07 сентября 2011

Я думаю, что я бы структурировал это так: getPentagonalNumber(int n) возвращает n пятое число - просто вычисляя по одному за раз. Это позволяет легко понять и проверить. Беспокойство по поводу составления их списка в функции main, которая может вызвать вашу функцию getPentagonalNumber.

Возможно, вы захотите, чтобы результаты вашего основного магазина сохранялись в List. Когда список .size() == 10, вызовите printResults(theResultList) (который вы напишете, используя часть кода, который в настоящее время находится в main) и .clear() список. Особенно, когда вы начинаете, сохраняя небольшие функции и четко разделив обязанности, вы сможете отслеживать, что делает ваш код.

1 голос
/ 07 сентября 2011

Обратите внимание, что вы выполняете формулу только один раз, а затем увеличиваете ее до тех пор, пока не получите 101. Итак, вы по существу сделали: 100 * (3 * 100 - 1) / 2 = 14950.

Рассмотрите возможность получения getPentagonalNumberверните одно значение, а затем вызывайте его x раз с увеличивающимися значениями, начиная с 1, пока не получите значение> 100 или пока вы не сделали это 100 раз, в зависимости от ваших требований.

0 голосов
/ 07 сентября 2011

Разве это не должно быть return formula;, а не return n;, поскольку я предполагаю, что вы пытаетесь вернуть ответ на свой расчет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...