Java 2D数组对一行中除对角索引外的所有数字求和
我已经绞尽脑汁好一阵子了,最后还是放弃了 这是我的数组:Java 2D数组对一行中除对角索引外的所有数字求和,java,arrays,Java,Arrays,我已经绞尽脑汁好一阵子了,最后还是放弃了 这是我的数组: int[][] arr = {{ 144, 2, 3, 2, 5}, {2, 36, 1, 2, 1}, {0, 0, 9, 0, 3}, {4, 4, 4, 225, 3}, {1, 1, 1, 1, 16}}; 我需要计算除了arr[I][I]之外的所有数字的总和,
int[][] arr = {{ 144, 2, 3, 2, 5},
{2, 36, 1, 2, 1},
{0, 0, 9, 0, 3},
{4, 4, 4, 225, 3},
{1, 1, 1, 1, 16}};
我需要计算除了arr[I][I]
之外的所有数字的总和,然后将其2的幂与所述数字进行比较
例如,144
是第一个循环中的arr[0][0]
。我需要取(2+3+2+5)^2
,检查它是否等于144
(它是)。我在第一排的时候很开心,但后来我就想现在就开始,除了arr[I][I]
号,第二排是36
直到现在我什么都没有,只是错误的假设。我仍在学习2D阵列,但这门课不太好
公共类TwoDArray{
公共静态void SquareNum(最终整数[][]arr){
双平方和=0;
int-total=0;
对于(int i=0;i
关于我如何做到这一点,有什么线索吗
谢谢:)这是代码,上面添加了我的建议。我还展示了如何按照您的描述进行输出
class TwoDArray {
public static void SquareNum(final int[][] arr) {
String output = "The row numbers where the condition is true are: ";
int total = 0;
for (int i = 0; i < arr[i].length; i++) {
total = 0;
for (int j = 0; j < arr[i].length; j++) {
total += arr[i][j];
}
double squareSum = Math.pow(total - arr[i][i], 2);
if (squareSum == arr[i][i])
{
output += i + " ";
}
}
System.out.println(output);
}
public static void main(final String[] args) {
final int[][] arr = {{ 144, 2, 3, 2, 5},
{2, 36, 1, 2, 1},
{0, 0, 9, 0, 3},
{4, 4, 4, 225, 3},
{1, 1, 1, 1, 16}};
SquareNum(arr);
}
}
class-TwoDArray{
公共静态void SquareNum(最终整数[][]arr){
字符串输出=“条件为真的行号为:”;
int-total=0;
对于(int i=0;i
目前看起来不错。好的下一步应该是total+=arr[i][j]代码>@Jaybird我之前写过这篇文章,只是想看看它能带来什么。我以为它给了我一个如何继续的线索,但我的大脑不明白。它分别对每一行进行汇总。如何让它在每行末尾输出我需要的信息?一旦内部循环计算了行总数,您就可以执行检查:Math.pow(total-arr[I][I],2)=arr[I][I]
每次开始一行(一个新的I),您就扔掉所有累积的数据,并将总数重置为0。如果要获取单个行总计,可能需要有多个“total”变量。另外,如果您不想包括对角线,请在允许进行加法之前进行一次if测试,看看i==j。@Jaybird谢谢!看起来是可行的,但我试图理解其中的逻辑:在每一行的末尾,我计算了那一行的总数。然后,我取那个总数,减去arr[I][I]数,然后把所有的数都取二的幂,如果结果是相同的arr[I][I],那么我找到了我想要的?我希望我理解正确。另外,您建议我如何输出这个?就像“if为真的行号是:在这里输入”一样,我相信I循环,第一个中的长度-1
应该是I
。目前你没有考虑最后一行。是的,这很有意义@SirRaffleBuffle,我会相应地编辑