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,我会相应地编辑