Java 如何在三角形中打印*?

Java 如何在三角形中打印*?,java,for-loop,Java,For Loop,我的代码: expected output: **** my output: **** *** *** ** ** * *

我的代码:

     expected output:           ****   my output:      ****
                                ***                    ***
                                **                     **
                                *                      *
                                **                     *
                                ***                    *
                                ****                   **** 
class赋值17
{
公共静态void main(字符串[]args)
{
int n=7;

对于(inti=0;i这可能不是最好的解决方案,但它是有效的;)我从4颗星开始,每行减少1颗星。如果只剩下1颗星,我就开始再次增加星星

class  assign17
    {
        public static void main(String[] args) 
        {
            int n=7;
            for(int i=0;i<7;i++)
            {
                for(int j=0;j<4;j++)    
                {
                    if(i+j<=n-4||j==0||i==n-1)
                        System.out.print("*");
                    else
                        System.out.print(" ");
                }
                System.out.println();
            }
        }
    }
publicstaticvoidmain(字符串[]args){
int星=4;
布尔下限=真;

对于(int i=0;i这将为您提供预期的输出

12345
1234
123
12
1
12
123
1234
12345
另外两个循环将打印星星的最后一部分

****
***
**
*

如果你愿意的话,如果我是对的,你可以用这个做

**
***
****
static void printstars(int num){
如果(数值>0){

对于(int t=0;t试试这个,我在代码中添加了else if条件

static void printstars(int num){
    if(num > 0){
        for(int t = 0; t<num;t++)
            System.out.print("*");
        System.out.println();
        printstars(num -1);
        for(int t = 0; t<num;t++)
            System.out.print("*");
        System.out.println();
    }
}
publicstaticvoidmain(字符串[]args){
int n=7;
对于(int i=0;i<7;i++){
对于(int j=0;j<4;j++){
如果(i+j=n-4)
系统输出打印(“*”);
其他的
系统输出打印(“”);
}
System.out.println();
}
}

您可以这样做。提取所使用的字符,以便将来需要更改。另外,请注意
系统。out.println
仅位于第一个for循环中,因此它没有那么复杂。有一种方法负责生成需要打印的字符串。当当你到达零时,你切换
y
变量并开始计数

 public static void main(String[] args) {
    int n = 7;
    for (int i = 0; i < 7; i++) {
        for (int j = 0; j < 4; j++) {
            if (i + j <= n - 4 || j == 0 || i == n - 1)
                System.out.print("*");
            else if (i - j >= n - 4)
                System.out.print("*");
            else
                System.out.print(" ");
        }
        System.out.println();
    }
}

每次迭代应打印的星号为

****
***
**
*
**
***
****
所以这里我使用了
Math.abs(mid-i)+1的内环限制


谢谢你,兄弟!是你给了我一个简单易懂的答案。问题与
*
有关,而不是数字(1 2 3 4…)停止从互联网复制代码。尝试你自己的方法和逻辑!以上源代码的参考链接:
static void printstars(int num){
    if(num > 0){
        for(int t = 0; t<num;t++)
            System.out.print("*");
        System.out.println();
        printstars(num -1);
        for(int t = 0; t<num;t++)
            System.out.print("*");
        System.out.println();
    }
}
 public static void main(String[] args) {
    int n = 7;
    for (int i = 0; i < 7; i++) {
        for (int j = 0; j < 4; j++) {
            if (i + j <= n - 4 || j == 0 || i == n - 1)
                System.out.print("*");
            else if (i - j >= n - 4)
                System.out.print("*");
            else
                System.out.print(" ");
        }
        System.out.println();
    }
}
public static final String CHARACTER = "*";

  public static void main(String args[]) {

    int x = 4;
    int y = 1;
    boolean hitZero = false;

    for (int i = 0; i < 7; i++) {
        System.out.println(buildStr(hitZero?y:x));

        if(x==1)
          hitZero = true;

       if(hitZero)
         y++;
       else
         x--; 
    }
  }

  private static String buildStr(int count) {
    String res = "";
    for(int i=0; i< count; i++)
      res+=CHARACTER;
    return res;
  }
****
***
**
*
**
***
****
iteration(i)      =>  0 | 1 | 2 | 3 | 4 | 5 | 6
number of star    =>  4 | 3 | 2 | 1 | 2 | 3 | 4
Math.abs(mid-i)+1 =>  4 | 3 | 2 | 1 | 2 | 3 | 4
public static void main(String[] args) 
{
  int n = 7;
  int mid = n / 2;

  for(int i=0; i<n; i++)
  {
    for(int j=0; j< Math.abs(mid-i)+1; j++)
    {
      System.out.print("*");
    }
    System.out.println();
  }
}
****
***
**
*
**
***
****