有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java代码在试图查找同时为星形和三角形的数字时不打印

我正在尝试为一个程序编写代码,该程序可以打印星号和三角形的值。虽然代码似乎不起作用,也不会打印出任何值,但星号的函数运行良好,尽管我认为三角形数的函数有点不确定,但我不确定问题出在哪里

我们将不胜感激 谢谢

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;
    }
}

共 (1) 个答案

  1. # 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;
        }
    }