Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打印数字三角形_Java_Loops - Fatal编程技术网

Java 打印数字三角形

Java 打印数字三角形,java,loops,Java,Loops,这里是CS学生。我刚刚收到一篇关于循环的介绍,我不确定我是否非常了解它们。我试着打印一个三角形的数字n,这样如果n=4你会得到这样的结果: 4 3 7 2 6 9 1 5 8 10 相反,我的结局是: 4 3 5 只要说我迷路就够了。这是我的密码: void drawT3 (int n) { int k = 1; int t = 1; for (int i=1;i<=n;i++) {

这里是CS学生。我刚刚收到一篇关于循环的介绍,我不确定我是否非常了解它们。我试着打印一个三角形的数字
n
,这样如果
n=4
你会得到这样的结果:

         4
      3  7
   2  6  9
1  5  8 10
相反,我的结局是:

   4
3   5
只要说我迷路就够了。这是我的密码:

void drawT3 (int n)
{
    int k = 1;
    int t = 1;
    for (int i=1;i<=n;i++)
    {  
        k = n;
        int j;
        for (j=1;j<=n-i;j++)
            System.out.print(" ");

        for (j=1;j<=t;j++)
        {
            System.out.printf("%3d",k);
            k += (n - j);
        }
        n--;
        t++;
        System.out.println();
    }
}
void drawT3(int n)
{
int k=1;
int t=1;
对于(int i=1;i

根据需要在数字周围留出空格

PS:我不会建议使用数组编写任何模式代码,除非它非常复杂。数组将使用额外的内存空间。

void printTriangle(int n)
void printTriangle(int n)
{ 
    // build an auxiliary 2D array
    final int t[][] = new int[n][n];
    int i = 1;
    for (int s = n - 1; s <= 2 * (n - 1); s++)
    {
        for (int x = s - n + 1; x < n; x++)
        {
            t[x][s - x] = i++;
        }
    }
    // print the array
    for (int y = 0; y < n; y++)
    {
        for (int x = 0; x < n; x++)
        {
            if (t[x][y] > 0)
            {
                System.out.printf("%3d", t[x][y]);
            }
            else
            {
                System.out.printf("   ");
            }
        }
        System.out.println(); // start new line
    }
}
{ //构建辅助二维阵列 最终整数t[][]=新整数[n][n]; int i=1; 对于(int s=n-1;s 0) { System.out.printf(“%3d”,t[x][y]); } 其他的 { System.out.printf(“”); } } System.out.println();//开始新行 } }
  • 构建大小为
    n
    的辅助二维数组
  • 按照人类的意愿将数字放入数组中,从1到n,紧跟在对角线之后。代码中的
    s
    表示
    x+y
    和。每个对角线的和都是常量。在第一条对角线(最长的一条)中,和等于
    n-1
    。在第二条对角线中,和多1条,
    n
    。在最后一条“对角线”中(右下角)和是
    2*(n-1)
    。这正是我们的循环:
    for(int s=n-1;s
    publicstaticvoidmain(String[]args){
    //此处的TODO代码应用程序逻辑
    三角形(4);
    }
    静态公共空间三角形(int n){
    int x=0;
    对于(int i=n;i>0;i--){
    系统输出打印(i+“”);
    x=i+n;
    
    对于(int j=0;j请注意,有许多方法可以打印出如上所述的三角形数字,例如,这里有两种

    // for n=5,
    // 1  2  3  4  5
    //    6  7  8  9
    //      10 11 12
    //         13 14
    //            15
    

    因为递归很有趣!

    类三角形
    {
    //使用递归,
    静态整数rowUR(整数计数、整数开始、整数深度)
    {
    int-ndx;
    
    如果(count那么你已经发布了n=4的预期输出,但是你发布了n=2的实际输出?@SamIam我认为这是他对
    n=4
    的实际输出。看看这个:
    n--;
    这将对
    n=4
    运行两次。如果我是你,我会制作一个2d数组来表示你的输出,并填充所有应该有空白的地方使用
    -1
    ,然后我会系统地打印数组的内容。填充每个值,直到它需要3个空格才能打印。这样,如果第一年我遇到这样的循环,你就不必处理如此复杂的逻辑(而且在以前的课程中还没有表现出对语言的清晰掌握)我想知道他是从哪里复制来的。这甚至有逗号列表初始化,这在java中并不流行,并且意味着有人可能学会了用较旧的语言编写代码。所以复制时要小心!!
    void printTriangle(int n)
    { 
        // build an auxiliary 2D array
        final int t[][] = new int[n][n];
        int i = 1;
        for (int s = n - 1; s <= 2 * (n - 1); s++)
        {
            for (int x = s - n + 1; x < n; x++)
            {
                t[x][s - x] = i++;
            }
        }
        // print the array
        for (int y = 0; y < n; y++)
        {
            for (int x = 0; x < n; x++)
            {
                if (t[x][y] > 0)
                {
                    System.out.printf("%3d", t[x][y]);
                }
                else
                {
                    System.out.printf("   ");
                }
            }
            System.out.println(); // start new line
        }
    }
    
    public static void main(String[] args) {
        // TODO code application logic here
        triangle(4);
    }
    
    static public void triangle(int n){
        int x = 0;
        for (int i = n;i>0;i--){
            System.out.print(i + " ");
            x = i+n;
            for (int j=0;j<n-i;j++){
                System.out.print(x - j + " ");
                x = x + n -j;
            }
            System.out.println("");
        }
    }
    
    // for n=5,
    // 1  2  3  4  5
    //    6  7  8  9
    //      10 11 12
    //         13 14
    //            15
    
    //             5
    //          4  9
    //       3  8 12
    //    2  7 11 14
    // 1  6 10 13 15
    
    class triangle
    {
        //Use recursion,
        static int rowUR( int count, int start, int depth )
        {
            int ndx;
            if(count<=0) return start;
            //-depth?
            for (ndx=0;ndx<depth;ndx++)
            {
                System.out.print("   ");
            }
            //how many? 5-depth, 5,4,3,2,1
            for( ndx=0; ndx<count; ++ndx )
            {
                System.out.printf("%3d",start+ndx);
            }
            System.out.printf("\n");
            if( count>0 )
            {
                rowUR( count-1, ndx+start, depth+1 );
            }
            return ndx;
        }
        //Use recursion,
        static int rowLR( int count, int start, int depth )
        {
            int ndx, accum;
            if( start < count )
                rowLR( count, start+1, depth+1 );
            for( ndx=0; ndx<depth; ++ndx )
            {
                System.out.print("   ");
            }
            accum=start;
            //how many? 5-depth, 1,2,3,4,5
            for( ndx=0; ndx<(count-depth); ++ndx )
            {
                System.out.printf("%3d",accum);
                accum+=count-ndx;
            }
            System.out.printf("\n");
            return ndx;
        }
        public static void main(String[] args)
        {
            int count=4, depth=0, start=1;
            System.out.printf("rowUR\n");
            rowUR( count=5, start=1, depth=0 );
            System.out.printf("rowLL\n");
            rowLL( count=5, start=1, depth=0 );
        }
    };