2014-12-02 59 views
-1

我试图编写打印星号和三角形数字的程序的代码。虽然代码似乎没有工作,并不会打印出任何值,starNumbers的功能工作正常,但我认为三角形数的函数有点不确定,我不太确定问题出在哪里。尝试查找星号和三角形数字时未打印的代码

所有帮助将不胜感激 感谢

public class TriangularNumbers { 

    public static void main(String[] args) { 
     int n = 1; 
     int i = 1; 
     int star = starNumbers(n); 
     int triangle = triangleNumbers(i, n); 

     while (star > 0) 
     { 
      while (star < triangle) 
      { 
       n++; 
       star = starNumbers(n); 
      } 
      while (triangle < star) 
      { 
       triangle = triangleNumbers(i, n); 
      } 
      if (star==triangle) 
      { 
       System.out.println(star); 
      } 
     } 
    } 
    private static int starNumbers (int n) { 
     int s = ((6*n)*(n-1)+1); 
     return s; 
    } 
    private static int triangleNumbers(int i, int n){ 
     int star = starNumbers(n); 
     int t = 0; 
     while (t<=star) 
     { 
      t = t + i; 
      i++; 
     } 
     return t; 
    } 
} 
+0

我有似曾相识......你是否复制,粘贴和删除你的旧问题(已关闭)? – tnw 2014-12-02 18:11:37

+0

是的,我仍然有一个持久的问题,这是一个改变的代码,以前的问题,我试图改变/构建的代码,但它仍然不打印任何数字,甚至不是1 ...我试图请求另一方的帮助,但没有人会回答,(可能是因为你说的问题已关闭) – roughosing 2014-12-02 18:17:40

+0

预期产出是多少? – user765635 2014-12-02 18:24:49

回答

-1
//try this 

public class TriangularNumbers { 

    public static void main(String[] args) { 
     int n = 1; 
     int i = 1; 
     int star = starNumbers(n); 
     int triangle = 0; 

     while (star > 0){ 
      star = starNumbers(n++); 
      triangle=0; 
      //System.out.println("Star "+star); 
      while(triangle < star){ 

       triangle = triangleNumbers(i,star); 

       if(star == triangle){ 
        System.out.println("match at "+star); 
       } 
      } 
     } 
    } 

    private static int starNumbers (int n) { 
     int s = ((6*n)*(n-1)+1); 
     return s; 
    } 

    private static int triangleNumbers(int i, int star){ 
     int t = 0; 
     while (t<star){ 
      t = i*(i+1)/2; //get next triangle 
      i++; 
     } 
     return t; 
    } 
} 
+0

感谢那个作品完美的人,虽然theres另一个值是一场比赛,但不担心生病的数字,我自己 – roughosing 2014-12-02 21:46:56

+0

啊修好了,我们不得不使用公式t = 1 + 2 + 3 + ...(n-1)+ n,实质上t = + i;再次感谢您的帮助! – roughosing 2014-12-02 22:04:55

0

这是一个空循环:

while (star > 0); 

应该

while(star > 0) 

但是,我看到if(star==traingle)条件从来都不是是真的,所以没有看到输出。

+0

谢谢,我注意到这个问题,并已修复它的文字,但我不明白为什么不满足条件?甚至不是1?我似乎无法看到代码中的问题,我有我的怀疑它与triangleNumbers函数,但我不确定什么 – roughosing 2014-12-02 18:19:52

+0

嗨,我明白方法starNumbers(int n),给定一个数字它返回第n个数字在序列,traingleNumbers假设如何工作? – 2014-12-02 18:44:20

+0

多数民众赞成我的iffy现货太多,基本上我试图做的是,使一旦starNumber计算出triangleNumbers函数将尝试生成一个值等于该starNumber,如果有一个(nt),或如果如果星号与他们输出的三角号相等,那么下一个星号就会被计算出来,并且程序会重复,尽管我不知道根据编码是否能够正常工作wirtten – roughosing 2014-12-02 18:49:08