gpt4 book ai didi

java - 参差不齐(锯齿状)数组中的行的乘积

转载 作者:行者123 更新时间:2023-12-01 10:30:53 26 4
gpt4 key购买 nike

本学期我在计算机科学类(class)中遇到了一个挑战问题,这是上学期的复习题,但问题是:“给定一个参差不齐的数组,查找数组中是否有任何行的乘积为 48,如果是,则返回该行号。如果没有行包含 48 的乘积,则返回 -1。”这就是我到目前为止所拥有的。

public class RaggedProducts {

public static void main(String[] args) {
int[][] a = {{3, 9},
{100},
{1, 4, 6, 2},
{23, 3, 8}};
System.out.println(product(a));
}

/*
* finds if parameter array has a row which the numbers within that row
* have a product of 48, returns row integer value. If no rows have a
* product of 48, returns -1.
*/
public static int product(int[][] ragged) {
int product = 1;

for (int i = 0; i < ragged.length; i++) {
// EDIT: I got my answer, I had to add "product = 1" here
for (int j = 0; j < ragged[i].length; j++) {
product *= ragged[i][j];
if (i > 0) { // what to do here to reset product value whenever "i" changes
// "i > 0" is just a placeholder, I know it doesn't make sense
product = 1;
}
if (product == 48) {
return i; // I want to return the value 2
}
}
}
return -1;
}

}

如果我将锯齿状数组中的第一行设置为具有 48 的乘积,则程序可以正常工作,但我对如何在行更改后将乘积字段重置为 1 感到困惑。任何帮助将不胜感激!

最佳答案

您似乎对迭代二维数组的工作原理感到困惑。你的两个循环基本上是这样做的:

for each row i do {
//you can do something here too!
for each cell j in row i do {
...
}
//...and here!
}

因此,如果您想将乘积重置为开始迭代下一行时,只需在代码中的第二个 for 循环之前执行此操作即可。

此外,如果乘积等于或大于 48,现在您的程序将返回一行。据我了解,这不是您想要的。因此,您应该在迭代一行中的单元格之后检查是否相等(在第二个 for 循环之后,但在第一个 for 循环内)。

顺便说一句,java支持的语法与我的伪代码更相似。你可以这样写

for (int[] row : ragged) {
for (int value : row) {
//do something
}
}

关于java - 参差不齐(锯齿状)数组中的行的乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35104571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com