有 Java 编程相关的问题?

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

java制作了一种使用星星创建X为正方形的图像的方法

我应该完成一个方法的内部

      public static void printXinSquare(int width) {

          } 

宽度是要创建的行数

  * * * * * * * *
*   * * * * * *   *
* *   * * * *   * *
* * *   * *   * * *
* * * *     * * * *
* * * *     * * * *
* * *   * *   * * *
* *   * * * *   * *
*   * * * * * *   *
  * * * * * * * *

我试过制作四个独立的三角形,并以某种方式将它们连接起来,但没有成功

我还尝试为空间创建一个for循环,然后为星星添加一个for循环,但我很困惑,不知道如何做到这一点

为了做到这一点,正如我之前所说的,我试着制作单独的三角形

  public static void printXinSquare(int width) {


  for (int i = 1; i <= width/2+1; i++) {
     for (int j = 1; j <= i; j++) {

        System.out.print("*");
     }
     System.out.println();
  }
  for (int i = width/2+2; i <= width; i++) {
     for (int j = width+1-i; j >= 1; j--) {

        System.out.print("*");
     }
     System.out.println();
  }
  System.out.println();
 }

这将创建一个指向右侧的三角形

  public static void printXinSquare(int width) {

  for (int line = width/2+1; line >1; line--) {
     for (int i = 1; i <= (line - 1); i++) {
        System.out.print(" ");
     }
     for (int i = 1; i <= (width    - 2 * line); i++) {
        System.out.print("*");
     }
     System.out.println();
  }

这将创建一个指向上方的三角形

这是我迄今为止尝试过的方法,但我认为这种方法行不通

我想我应该创建考虑到空间的循环

但我不知道怎么做,因为空间是对角的

如能帮助完成此方法,将不胜感激:)


共 (2) 个答案

  1. # 1 楼答案

    这应该以10的输入宽度打印出你问题中的确切图片

    public static void printXinSquare(int width) 
    {
        for (int k = 0; k < width; k++) {
            for (int j = 0; j < width; j++) {
                if (k == j || k == width - j - 1) {
                    System.out.print("  ");
                }
                else {
                    System.out.print("* ");
                }
            }
            System.out.println();
        }
    }
    

    它每次打印*时都会使用一个空格,以确保它像图片一样被适当地隔开,并在两种不同的情况下打印2空格,每种情况都代表一条对角线。这两起案件如下:

    if行计数等于当前列计数,应该有空格而不是星号。这将创建从左上到右下的第一条对角线

    if行计数等于width减去当前列计数减去1,它也应该是一个空格,而不是一个星号。这将创建第二条朝相反方向的对角线

  2. # 2 楼答案

    试试这样:

    for (int i = 0; i < width; i++) {
      for (int j = 0; j < width; j++) {
        if (i == j || i+j == width) {
           System.out.print(" ");
        } else {
           System.out.print("*");
        }
      }
      System.out.println("");
    }
    

    在这种情况下,如果'*'不在三角形中,则打印' '。内部三角形是条件(i==j || i+j==width)