【问题标题】:trying to work with arrays in java but don't know what i am doing wrong尝试在 java 中使用数组但不知道我在做什么错
【发布时间】:2021-10-31 11:05:08
【问题描述】:

我正在尝试实现以下结构,

100    200    300    400    500    600    700    800
200    400    600    800  1,000  1,200  1,400  1,600

我尝试使用以下代码,但无法使其工作。

public class Main {

    public static void main(String[] args) {
        int cols = 5;
        int rows = 4;
        int number = 100;
        int [][] doublearr = new int [rows][cols];


        for (int i = 0; i < doublearr.length ;i ++){
            for(int j=0; j < doublearr[i].length; j++){
                    doublearr[0][0] = number;
                    doublearr[i][j] = doublearr[0][0] *( j+1);
                    System.out.print("\t" + doublearr[i][j]);
            }
            System.out.println();
        }
    }
    }

这是我得到的输出。

100 200 300 400 500
100 200 300 400 500
100 200 300 400 500
100 200 300 400 500

如果有人能指出我正确的方向,我真的很感激。提前致谢。

【问题讨论】:

  • 1) 你真的想在每次循环运行中设置doublearr[0][0] = number 吗?这似乎是一次初始化,应该在循环开始之前完成一次。
  • 2) 你应该分开填充数组和打印数组(这意味着有两个不同的循环)。
  • 我尝试了第一步,结果是一样的,将按照您所说的进行第二步,看看是否可行。
  • 请用您最近的尝试及其产生的输出更新您问题中的代码。
  • 我已经尝试了 -Seelenvirtuose 建议的两个步骤,但看起来它并没有改变任何东西。

标签: java multidimensional-array


【解决方案1】:

如果你想打印上列的两倍,那么你需要做一个小改动:

for (int i = 0; i < doublearr.length ;i ++){
    for(int j=0; j < doublearr[i].length; j++){
            doublearr[0][0] = number;
            doublearr[i][j] = doublearr[0][0] *( j+1);
            System.out.print("\t" + doublearr[i][j]);
    }
  number*=2;  // add this line
    System.out.println();
}

【讨论】:

  • 这段代码的工作原理除了一件事,在 300 之后的第二行的输出中,它应该是 400 、 500 等等,而是添加 300. 100 200 300 400 500 200 400 600 800 1000 300 600 900 1200 1500 400 800 1200 1600 2000,
  • @isfan 我尝试使用第 5 列和第 4 行,它按预期工作,打印了上述列的两倍
  • 感谢 Ravik 我想要实现的是在索引 0 的第二行,它将是第一行索引 0 的两倍,假设 100 在第一行第 1 列的索引 0 处,所以在第二行它应该像这样增加 200 300 400 而不是 200 400 600。再次感谢您的帮助。
  • @isfan 请在您的问题中添加至少 4 行示例输出,以便我可以更好地理解并提供正确的选项
  • 非常感谢您的回复。
【解决方案2】:

您想将列更改为8,将行更改为2,因为您的输出值为8 * 2 = 16。你的方程式是doublearr[0][0] * (j + 1)

如果你的方程式是doublearr[0][0] * (j + 1)

1. 100 * (0 + 1) = 100

2. 100 * (1 + 1) = 200

3. 100 * (2 + 1) = 300

4. 100 * (3 + 1) = 400

5. 100 * (4 + 1) = 500

6. 100 * (5 + 1) = 600

7. 100 * (6 + 1) = 700

8. 100 * (7 + 1) = 800

9. 100 * (0 + 1) = 100

10. 100 * (1 + 1) = 200

11. 100 * (2 + 1) = 300

12. 100 * (3 + 1) = 400

13. 100 * (4 + 1) = 500

14. 100 * (5 + 1) = 600

15. 100 * (6 + 1) = 700

16. 100 * (7 + 1) = 800

如果等式更改为doublearr[0][0] * (j + 1) * (i + 1)

1. 100 * (0 + 1) * (0 + 1)= 100

2. 100 * (1 + 1) * (0 + 1)= 200

3. 100 * (2 + 1) * (0 + 1)= 300

4. 100 * (3 + 1) * (0 + 1)= 400

5. 100 * (4 + 1) * (0 + 1)= 500

6. 100 * (5 + 1) * (0 + 1)= 600

7. 100 * (6 + 1) * (0 + 1)= 700

8. 100 * (7 + 1) * (0 + 1)= 800

9. 100 * (0 + 1) * (1 + 1)= 200

10. 100 * (1 + 1) * (1 + 1)= 400

11. 100 * (2 + 1) * (1 + 1)= 600

12. 100 * (3 + 1) * (1 + 1)= 800

13. 100 * (4 + 1) * (1 + 1)= 1000

14. 100 * (5 + 1) * (1 + 1)= 1200

15. 100 * (6 + 1) * (1 + 1)= 1400

16. 100 * (7 + 1) * (1 + 1)= 1600

下面是我的代码:

public class MyClass {
    public static void main(String[] args) {
    int cols = 8;
    int rows = 2;
    int number = 100;
    int [][] doublearr = new int [rows][cols];


    for (int i = 0; i < doublearr.length ;i ++){
        for(int j=0; j < doublearr[i].length; j++){
                doublearr[0][0] = number;
                doublearr[i][j] = doublearr[0][0] * (j + 1) * (i + 1);
                System.out.print(" " + doublearr[i][j]);
        }
        System.out.println();
    }
}
}

【讨论】:

  • 感谢一百万非常感谢您的帮助。
  • @isfan 觉得对的别忘了采纳哦
  • 不确定如何接受答案,页面上是否有任何选项可以接受答案。
  • 是的,您可以看到右上角的right answer 符号,只需单击它即可。落后计票
  • 点击我的账户right button。你点击Ravik账号按钮
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 2021-03-27
相关资源
最近更新 更多