Java 以数字作为行打印的三角形

Java 以数字作为行打印的三角形,java,for-loop,Java,For Loop,我有一个任务要求我们创建一个三角形,看起来像这样,只有for循环,我目前无法将我的星号更改为这些数字,我可以将整个三角形转换为一个数字 下面是我打印三角形的代码: public class ExtraCredit_Bazar { public static void main ( String arg[] ){ for (int i=1; i<10; i += 2) { for (int k=0; k < (4 - i

我有一个任务要求我们创建一个三角形,看起来像这样,只有for循环,我目前无法将我的星号更改为这些数字,我可以将整个三角形转换为一个数字

下面是我打印三角形的代码:

 public class ExtraCredit_Bazar {

    public static void main ( String arg[] ){

       for (int i=1; i<10; i += 2)
       {
            for (int k=0; k < (4 - i / 2); k++)
            {
                 System.out.print(" ");
            }
            for (int j=0; j<i; j++)
            {
                    System.out.print("*");
            }
            System.out.println("");

       }
  }

按如下方式编辑第二个内部循环:

int number = 1;

for (int j = 0; j < i; j++) {
    System.out.print(number);

    if (j < i / 2) {
        number *= 2;
    } else {
        number /= 2;
    }
}
public class ExtraCredit_Bazar {

    public static void main ( String arg[] ){

       for (int i=1; i<10; i += 2){
            for (int k=0; k < (4 - i / 2); k++){
                 System.out.print(" ");
            }
            int number = 1;
            for (int j=0; j < (i/2); j++){
                System.out.print(number);
                number *= 2;
            }
            for (int j= (i/2); j < i; j++){
                System.out.print(number);
                number /= 2;
            }
            System.out.println("");
        }
    }
}

据我所知,你不知道如何获得每个级别的正确数字。您可以这样做:

int number = 1;

for (int j = 0; j < i; j++) {
    System.out.print(number);

    if (j < i / 2) {
        number *= 2;
    } else {
        number /= 2;
    }
}
public class ExtraCredit_Bazar {

    public static void main ( String arg[] ){

       for (int i=1; i<10; i += 2){
            for (int k=0; k < (4 - i / 2); k++){
                 System.out.print(" ");
            }
            int number = 1;
            for (int j=0; j < (i/2); j++){
                System.out.print(number);
                number *= 2;
            }
            for (int j= (i/2); j < i; j++){
                System.out.print(number);
                number /= 2;
            }
            System.out.println("");
        }
    }
}

基本上,我已经将for循环打印“*”分为两个for循环。第一个打印一个数字,并在下一次迭代中将其乘以2。然后,当到达中间时,第二个循环进来,它将数字除以二,以使它再次变小。

< P>中间的数字应该容易得到。对于其余的数字,我建议先将字符串保存到数组中,然后再根据最后一个最长字符串的长度将其打印到字符串的中心

public class ExtraCredit_Bazar {

    public static void main ( String arg[] ) {
       int z = 1;
       final int lineCount = 8;
       String[] lines = new String[lineCount];
       // do first iteration "by hand" 
       String left="1";
       String right="1";
       lines[0] = left;

       for (int i=1; i<lineCount ; i++)
       {
            // update z here

            // update left here

            lines[i] = /*concat strings here (left, right and maybe spaces)*/;

            // update right here Integer.toString(int) if necessary
       }

       final int maxStringLength = lines[lineCount-1].length();
       for (int i = lineCount-2; i >= 0; i--) {
           // add spaces to the left of lines[i] dependent on it's
           // length and maxStringLength

           // if you do it right, you can reuse the spaces you add to the
           // left and don't have to create them from the start.
           // Therefore the "backwards iteration". 
       }

       // print the lines
}

您可能已经注意到缺少代码。如果你知道java和数学的基础知识,你应该能够自己轻松地解决这个问题。

你是在问问题吗,或者试图雇佣一名程序员?抱歉,这是我第一次使用这个网站,我会编辑它。我在程序中使用了你的代码,它会打印三角形,但它会在顶部打印1,然后在重新启动时打印0。在每次运行for循环之前,你是否分配number=1?是的,它在主方法下面刚刚编译,工作完全正常。我编辑了我的帖子,这样你就可以看到整个代码了。我刚刚完成了我的写作目的:插入了我的两个for循环,而不是使用代码中的变量j的循环。我发现错误的原因是当我将代码放入我的程序时,我错误地键入了错误的内容谢谢你的帮助