A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求一个3*3矩阵对角线元素之和。

8 个回复

倒序浏览
本帖最后由 yijincheng 于 2016-3-25 23:51 编辑

初学者的麻烦中,有一个就是不习惯将人类的思考方式装换为机器的思考方式。假如让你拿笔在纸上算,一定会相当容易的解答出来。
你就把你在 草纸上的演算过程和脑子里脑补的部分用代码具现化出来。
比如这道题。人是怎么知道某元素是否在对角线上?是通过该元素的横坐标和纵坐标的关系来判断的。横纵坐标符合y = x 和 y = -x + 3的元素。都在对角线上。
那么就好办了。用一个3*3的二维数组模拟这个矩阵。
用双循环结构将二维数组初始化。
在用双循环遍历数组,将横纵坐标符合y = x 和 y = -x + 1的元素全部相加。然后减去一个同时y = x 和 y = -x + 1的那个元素(交叉点)。
回复 使用道具 举报
把这个矩阵宝义为二维数组,然后二维数组遍历,应该会吧遍历的时候加个判断当行数等于列数是加到sum变量中
回复 使用道具 举报
是两条对角线都还要求吗,如果要求另一条的话还要再加点
回复 使用道具 举报
循环就可以了吧?如果对题意感觉有歧义的话,可以上网找度娘问问
回复 使用道具 举报
不是用for循环嵌套那个么= =,如果不是的话就不要理我了
回复 使用道具 举报
随手一写,顺便混点黑马币
public class Sum {

        /**
         * @param args
         */
        public static void main(String[] args) {
                int[][] a = {{1,2,3},{4,5,6},{7,8,9}};//也可用Scanner输入,为了简便,就不写了
                int sum = 0;//用于记录和
                for(int i = 0; i < 3; ++i){
                        sum += a[i][i];
                }
                System.out.println("主对角线的和是:"+sum);
                for(int i = 0; i < 3; i++){
                        for(int j = 0; j<3; j++){
                                if((i + j) == 2){//i+i=2时,为副对角线元素,a[0][2],a[1][1],a[2][0]
                                        sum +=a[i][j];
                                }
                        }
                       
                }
                System.out.println("两条对角线的和是:"+sum);
        }

}
回复 使用道具 举报
yijincheng 发表于 2016-3-24 22:15
初学者的麻烦中,有一个就是不习惯将人类的思考方式装换为机器的思考方式。假如让你拿笔在纸上算,一定会相 ...

分析得很详细,谢谢!
回复 使用道具 举报
霸道总裁爱村花 发表于 2016-3-24 23:54
随手一写,顺便混点黑马币
public class Sum {

搞定了,谢谢!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马