java

Java: sumar diagonal de matriz

Hoy vamos a trabajar con matrices en Java. Veremos cómo sumar una diagonal de la matriz o mejor dicho: cómo sumar las dos diagonales de una matriz.

De este modo al final tendremos una función que recibirá la matriz de la cual hay que sumar la diagonal, y la diagonal a usar (la principal o la secundaria) devolviendo la suma de la diagonal indicada.

Todo esto lo vamos a hacer con Java.

Imprimiendo y recorriendo matriz

Antes de pasar a la solución del ejercicio veamos cómo imprimir la matriz. Es un código muy simple con dos ciclos for:

static void imprimirMatriz(int[][] matriz) {
    for (int y = 0; y < matriz.length; y++) {
        for (int x = 0; x < matriz[y].length; x++) {
            int numeroActual = matriz[y][x];
            System.out.printf("%5d", numeroActual);
        }
        System.out.println();
    }
}

Si te preguntas por el %5d es porque quiero dejar un espacio en todos los números para que los mismos sean alineados sin importar sus longitud.

Las diagonales

La diagonal principal (según yo) es la que va desde 0,0 hasta N,N en donde N es la longitud de la matriz menos 1. O en otras palabras, desde la esquina superior izquierda hasta la esquina inferior derecha.

Por otro lado, la diagonal secundaria es la que va desde X en 0, Y en N en donde N es la longitud de la matriz menos 1 y termina en X en N y Y en 0. O dicho de otra manera, desde la esquina inferior izquierda hasta la esquina superior derecha.

Sumar diagonales en Java

Vayamos al código, en este caso simplemente hacemos un ciclo while que hará que recorramos la diagonal de la matriz ya sea la principal o secundaria.

En este caso la diagonal se indica con una String.

static int sumarDiagonal(int[][] matriz, String diagonal) {
    int suma = 0;
    // Si es la principal
    if (diagonal.equals("p")) {
        int x = 0, y = 0;
        while (x < matriz.length && y < matriz[0].length) {
            suma += matriz[y][x];
            x++;
            y++;
        }
    } else {
        int x = 0, y = matriz.length - 1;
        while (x < matriz.length && y >= 0) {
            suma += matriz[y][x];
            x++;
            y--;
        }
    }
    return suma;
}

Al final regresamos la suma. Ahora veamos cómo usar esta función.

Poniendo todo junto

Sumar diagonales de matriz en Java – Programación

El código completo que incluye la impresión de la matriz y la llamada a sumarDiagonal queda como se ve a continuación en el ejemplo que suma la diagonal principal y la secundaria:

public class Main {
    static void imprimirMatriz(int[][] matriz) {
        for (int y = 0; y < matriz.length; y++) {
            for (int x = 0; x < matriz[y].length; x++) {
                int numeroActual = matriz[y][x];
                System.out.printf("%5d", numeroActual);
            }
            System.out.println();
        }
    }

    static int sumarDiagonal(int[][] matriz, String diagonal) {
        int suma = 0;
        // Si es la principal
        if (diagonal.equals("p")) {
            int x = 0, y = 0;
            while (x < matriz.length && y < matriz[0].length) {
                suma += matriz[y][x];
                x++;
                y++;
            }
        } else {
            int x = 0, y = matriz.length - 1;
            while (x < matriz.length && y >= 0) {
                suma += matriz[y][x];
                x++;
                y--;
            }
        }
        return suma;
    }


    public static void main(String[] args) {
        // https://parzibyte.me/blog
        int[][] matriz = {
                {10, 5, 12},
                {98, 5, 6},
                {8, 4, 6},
        };
        System.out.println("La matriz es:");
        imprimirMatriz(matriz);
        int sumaPrincipal = sumarDiagonal(matriz, "p");
        int sumaSecundaria = sumarDiagonal(matriz, "s");
        System.out.printf("La suma de la diagonal principal es %d y la de la secundaria es %d\n", sumaPrincipal, sumaSecundaria);
    }
}

Por cierto, este código funcionará para matrices de cualquier tamaño, siempre y cuando las mismas tengan la misma cantidad de filas y columnas.

El código funciona correctamente como puedes apreciar en la imagen del resultado. Igualmente puedes leer más sobre Java en el blog de Parzibyte.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 días hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 días hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 días hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 días hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

3 días hace

Solución: Apache – Server unable to read htaccess file

Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…

3 días hace

Esta web usa cookies.