stu*_*der 2 java methods while-loop
这是我被分配的问题:
所谓的"星号"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;
}
Run Code Online (Sandbox Code Playgroud)
}
这是一个骨架.自己完成剩下的事情:
问自己的问题:
祝好运!
public class TriangularStars {
private static final double ERROR = 1e-7;
public static void main(String args[]) {
int triangle = 0;
for (int i = 0; triangle >= 0; i++) {
triangle = determineTriangleNumber(i, triangle);
if (isStarNumber(triangle)) {
System.out.println(triangle);
}
}
}
public static boolean isStarNumber(int possibleStar) {
double test = (possibleStar - 1) / 6.;
int reduce = (int) (test + ERROR);
if (Math.abs(test - reduce) > ERROR)
return false;
int sqrt = (int) (Math.sqrt(reduce) + ERROR);
return reduce == sqrt * (sqrt + 1);
}
public static int determineTriangleNumber(int i, int previous) {
return previous + i;
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
1
253
49141
9533161
1849384153
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3209 次 |
| 最近记录: |