java的一个小问题 求

编写Java方法void bandMatrix(int n,int width),该方法接受两个整数参数n和宽度,并打印如下所示的n×n模式,对于每个与主对角线的距离严格大于宽度的元素,为零(0),对于每个不是宽度的条目,为一个星号(),每个0或之间有两个空格。

请注意,这里的距离将是您向上/向下/向左/向右移动以到达任何对角线条目的最小次数

img

img

import java.util.Scanner;

public class test {
    public static void bandMatrix(int n, int width) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (Math.abs(i - j) <= width)
                    System.out.print("*");
                else
                    System.out.print("0");
                if (j != n - 1)
                    System.out.print("  ");
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("plase input n and width:");
        while (sc.hasNextInt()) {
            int n = sc.nextInt();
            int width = sc.nextInt();
            bandMatrix(n, width);
            System.out.print("plase input n and width:");

        }
        sc.close();
        // bandMatrix(4, 1);
        // bandMatrix(4, 2);
    }
}

循环输出二维数组每个元素,比较其与主对角线的x和y的差值的绝对值是否大于等于width。大于则显示0,否则显示*号


public class demo
{
    public static void bandMatrix(int n, int width) 
    {
        for (int i = 0; i < n; i++) 
        {
            for (int j = 0; j < n; j++) 
            {
                if(j!=0)
                    System.out.print("  ");
                if (Math.abs(i - j) <= width)
                    System.out.print("*");
                else
                    System.out.print("0");
            }
            System.out.println();
        }
    }
 
    public static void main(String[] args) 
    {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int w = sc.nextInt();
        bandMatrix(n,w);
    }
}


import java.util.Scanner;

public class TestBandMatrix {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            int n = scanner.nextInt();
            int w = scanner.nextInt();
            bandMatrix(n, w);
        }
    }

    public static void bandMatrix(int n, int width) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (j != 0) {
                    System.out.print("  ");
                }
                if (Math.abs(i - j) <= width) {
                    System.out.print("*");
                } else {
                    System.out.print("0");
                }
            }
            System.out.println();
        }
    }
}

结果

img