【发布时间】:2015-12-12 18:09:47
【问题描述】:
这是分配给我的问题:
所谓的“星数”,s,是一个由以下公式定义的数: s = 6n(n-1) + 1 其中 n 是星号的索引。 因此,前六个(即对于 n = 1、2、3、4、5 和 6)星号是:1、13、37、 73、121、181
相比之下,所谓的“三角形数”t 是从 1 到 n 的数字之和:t = 1 + 2 + … + (n-1) + n。 因此,前六个(即 n = 1、2、3、4、5 和 6)三角形数是:1、3、6、10、15、21
编写一个 Java 应用程序,生成一个包含所有 int 类型值的列表,这些值既是星号又是三角形数。
解决此问题时,您必须编写并使用至少一个函数(例如
isTriangeNumber()或isStarNumber()或determineTriangeNumber()或determineStarNumber())。此外,您必须仅使用此处提供的公式来解决问题。
tl;dr:需要输出星号和三角号的值。
不幸的是,我只能在无限循环中获得输出值“1”的结果,即使我在 while 循环中递增 1。
public class TriangularStars {
public static void main(String[] args) {
int n=1;
int starNumber = starNumber(n);
int triangleNumber = triangleNumber(n);
while ((starNumber<Integer.MAX_VALUE)&&(n<=Integer.MAX_VALUE))
{
if ((starNumber==triangleNumber)&& (starNumber<Integer.MAX_VALUE))
{
System.out.println(starNumber);
}
n++;
}
}
public static int starNumber( int n)
{
int starNumber;
starNumber= (((6*n)*(n-1))+1);
return starNumber;
}
public static int triangleNumber( int n)
{
int triangleNumber;
triangleNumber =+ n;
return triangleNumber;
}
}
【问题讨论】:
-
您用于每种方法的 n 必须不同,因为一种方法的增长速度比另一种快得多。使用 starN 和 triangleN 并递增产生较小数字的“n”,直到它们匹配。
标签: java methods while-loop