【问题标题】:Diagonal elements Array对角线元素数组
【发布时间】:2017-01-06 12:45:08
【问题描述】:

如何生成对角线数组: 第一个元素arr[0][0] 是随机的,下一个对角线元素是随机的但高于前一个元素但不高于10,

示例:

8 0 0 0

0 10 0 0

0 0 13 0

0 0 0 17

    int lengthArray = scan.nextInt();
    int[][] array = new int[lengthArray][lengthArray];
    array[0][0] = rnd.nextInt(7) + 4;
    for (int i = 1; i < array.length; i++) {
        for (int j = 0; j < array.length; j++) {
// generate number diagonal
            array[i][i] = rnd.nextInt(
                    (((array[i - 1][i - 1] + 10) - (array[i - 1][i - 1] + 1) + 1)) + (array[i - 1][i - 1] + 1));
        }
    }

我不知道我做错了什么。

【问题讨论】:

  • 您声称它们不能高于 10,但在您的示例中,您显示的值高于 10。您的意思是 difference 不能高于 10?
  • 明确您的问题。你的例子和问题是完全互补的
  • 第二个 for 循环在做什么?你永远不会使用j
  • 如果我错了,请纠正我,但(((array[i - 1][i - 1] + 10) - (array[i - 1][i - 1] + 1) + 1)) + (array[i - 1][i - 1] + 1)); = array[i - 1][i - 1] + 13 括号对+ - 无用
  • 数组[0][0] = 8;数组[1][1] = (示例 17);数组[2][2] = ...

标签: java arrays random


【解决方案1】:

您可以简单地将 0 到 10 之间的随机值(排除)添加到前一个值的值。这将给出previous -&gt; previous + 9的范围@

array[i][i] = rnd.nextInt(10) + (array[i - 1][i - 1]);

这里是完整的测试代码:

int lengthArray = 5;
int[][] array = new int[lengthArray][lengthArray];
Random rnd = new Random();
array[0][0] = rnd.nextInt(7) + 4;
for (int i = 1; i < array.length; i++) {
    array[i][i] = rnd.nextInt(10) + (array[i - 1][i - 1]);
}

for (int i = 0; i < array.length; i++) {
    System.out.println(Arrays.toString(array[i]));
}

一个输出:

[4, 0, 0, 0, 0]
[0, 6, 0, 0, 0]
[0, 0, 8, 0, 0]
[0, 0, 0, 15, 0]
[0, 0, 0, 0, 19]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 2011-09-03
    • 2020-02-05
    • 1970-01-01
    • 2016-06-02
    相关资源
    最近更新 更多