我必须从1-100找到第一个N [pentagonal numbers][1]
并在每行显示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 < )
}
}
答案 0 :(得分:3)
这还有很长的路要走。让我们用更好的方法将其分解。
让我们创建一个返回一组五边形数字的方法(我们将使用一个数组。)这允许我们稍后使用该方法,如果可能还有额外的功劳!
我们的签名如下:
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 :(得分:1)
请注意,您只执行一次公式然后递增它直到您得到101.所以您已经完成了:100 *(3 * 100 - 1)/ 2 = 14950。
考虑让getPentagonalNumber返回单个值,然后使用从1开始的递增值调用x次,直到得到值&gt; 100或直到你完成100次,具体取决于你的要求。
答案 2 :(得分:1)
我认为我构建此方法的方法是让getPentagonalNumber(int n)
返回n
五角形数字 - 一次只计算一个。这使它易于理解和测试。担心在main
函数中编译它们的列表,可以调用getPentagonalNumber
函数。
您可能希望将主要功能存储结果转换为List
。列表.size() == 10
时,请调用printResults(theResultList)
(您将使用当前main
中的部分代码编写)和.clear()
列表。特别是在开始时,保持较小的功能和明确分离的职责将有助于您跟踪代码的运行情况。
答案 3 :(得分:0)
不应该是return formula;
而不是return n;
,因为我假设您正在尝试将答案返回到您的计算中?