Java 多维数组,按数字填充矩阵

Java 多维数组,按数字填充矩阵,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,所以我完全被难住了。我需要创建一个多维数组n×n,并以特定的方式填充它。我已经能够按照n×n创建2d数组,但不知道如何填充它。以下我已将任务的措辞完全按照给我的: 给定数字n,不大于100。创建大小为n×n的矩阵,并按以下规则填充。数字0应存储在主对角线上。与主对角线相邻的两条对角线应包含数字1。接下来的两条对角线-数字2等 示例输入1: 5 样本输出1: 0 1 2 3 4 1 0 1 2 3 2 1 0 1 2 3 2 1 0 1 4 3 2 1 0 这是到目前为止我的代码。任何方向都很

所以我完全被难住了。我需要创建一个多维数组
n×n
,并以特定的方式填充它。我已经能够按照
n×n
创建2d数组,但不知道如何填充它。以下我已将任务的措辞完全按照给我的:

给定数字n,不大于100。创建大小为
n×n
的矩阵,并按以下规则填充。数字0应存储在主对角线上。与主对角线相邻的两条对角线应包含数字1。接下来的两条对角线-数字2等

示例输入1:

5
样本输出1:

0 1 2 3 4
1 0 1 2 3
2 1 0 1 2
3 2 1 0 1
4 3 2 1 0
这是到目前为止我的代码。任何方向都很好

主类{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
int n=scanner.nextInt();
int[][]数组=新的int[n][n];
for(int i=0;i
以下是我如何解决您的问题:

我将使用嵌套for循环,一个循环遍历行,另一个循环遍历列。在我的示例中,
i
在行上迭代,
j
在列上迭代。现在我知道我只击中矩阵的每个单元格一次,而且只有一次,我只需要找出一种方法,从
I
j
计算单元格的值。在这种情况下,单元格的值是列数减去行数,或
j-i
,除非没有负数,这可以用绝对值(
Math.abs(int)
)轻松解决。以下是我将如何做到这一点:

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[][] array = new int[n][n];

        for (int i = 0; i < n; i++) { //iterate over rows
            for (int j = 0; j < n; j++) { //iterate over columns
                array[i][j] = Math.abs(j - i); //calculate cell's value
            }
        }

        for (int i = 0; i < n; i++) {
            System.out.println(Arrays.toString(array[i]));
        }
    }
}
公共类主{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
int n=scanner.nextInt();
int[][]数组=新的int[n][n];
对于(int i=0;i
导入java.util.Scanner;
班长{
公共静态void main(字符串[]args){
//把你的代码放在这里
扫描仪=新的扫描仪(System.in);
int n=scanner.nextInt();
int[][]数组=新的int[n][n];
对于(int i=0;i
导入java.util.array;
导入java.util.Scanner;
公共类填充Matrix BythEnumbers{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
int n=scanner.nextInt();
scanner.close();
int[][]矩阵=新的int[n][n];
对于(int i=0;i
您可以从行索引中减去列索引,也可以从行索引中减去列索引,并从结果中获取值。这样可以获得单元格值:

int n=5;
int[][]arr=IntStream.range(0,n)
.mapToObj(i->IntStream.range(0,n)
.map(j->Math.abs(i-j))
.toArray())
.toArray(int[]]::新建);
//输出
array.stream(arr.map)(array::toString).forEach(System.out::println);
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        // put your code here
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[][] array = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                array[i][j] = Math.abs(j - i);
                System.out.print(array[i][j] + " ");
            }
            System.out.println("");
        }
    }
}
[0, 1, 2, 3, 4]
[1, 0, 1, 2, 3]
[2, 1, 0, 1, 2]
[3, 2, 1, 0, 1]
[4, 3, 2, 1, 0]