Nevypsání matice – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Nevypsání matice – Java – Fórum – Programujte.comNevypsání matice – Java – Fórum – Programujte.com

 

Petr
~ Anonymní uživatel
746 příspěvků
1. 4. 2015   #1
-
0
-

Zdravím zkoušel jsem si dělat matice:

public class DvourozmernePole {

    public static void main(String[] args) {
        int[][] maticeA = new int[5][4];
        //genereuj prvky matice z intervalu <-20; 20>
        for (int i = 0; i < maticeA.length; i++) {
            for (int j = 0; j < maticeA.length; j++) {
                maticeA[i][j] = -20 + (int) (41 + Math.random());
            }
        }

        //vypise zformatovane prvky matice
        System.out.println("Matice A:");
        for (int i = 0; i < maticeA.length; i++) {
            for (int j = 0; j < maticeA.length; j++) {
                System.out.format("%6d" + maticeA[i][j]);
            }
            System.out.println("");
        }
        //vypise prvky na hlavni diagonale

        int pocetPrvkuHLDiagonaly = Math.min(maticeA.length, maticeA[0].length);

        System.out.println("Prvky hlavni diagonaly:");
        for (int i = 0; i < pocetPrvkuHLDiagonaly; i++) {
            System.out.print(maticeA[i][i] + ". ");
        }
        System.out.println("");

        //zjisti od uzivatele dva indexy pro radky, ktere zameni
        // radky za sloupce
        Scanner vstup = new Scanner(System.in);
        System.out.println("Zadejte index radku k vymene: ");
        int index1 = vstup.nextInt();
        System.out.println("Zadejte index druheho radku k vymene: ");
        int index2 = vstup.nextInt();

        for (int i = 0; i < maticeA.length; i++) {
            for (int j = 0; j < maticeA.length; j++) {
                int[] pom = maticeA[index1];
                maticeA[index1] = maticeA[index2];
                maticeA[index2] = pom;

            }

        }

    }

}

Problém je, že když to chci spustit nahlásí mi to chybu a u některých řádku mi svítí žárovka s vykřičníkem(use enhanced for loop to iterate over the array):

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
    at izapr_cv04.DvourozmernePole.main(DvourozmernePole.java:12)
Java Result: 1

poradíte mi v čem dělám chybu?

Děkuji

Nahlásit jako SPAM
IP: 78.128.148.–
Petr
~ Anonymní uživatel
746 příspěvků
1. 4. 2015   #2
-
0
-

#1 Petr
přesněji ty vykřičníky svítí u každého cyklu for

Nahlásit jako SPAM
IP: 78.128.148.–
Petr
~ Anonymní uživatel
746 příspěvků
1. 4. 2015   #3
-
0
-

#2 Petr

public class DvourozmernePole {

    public static void main(String[] args) {
        int[][] maticeA = new int[5][4];
        //genereuj prvky matice z intervalu <-20; 20>
        for (int i = 0; i < maticeA.length; i++) {
            for (int j = 0; j < maticeA[i].length; j++) {
                maticeA[i][j] = -20 + (int) (41 + Math.random());
            }
        }

        //vypise zformatovane prvky matice
        System.out.println("Matice A:");
        for (int i = 0; i < maticeA.length; i++) {
            for (int j = 0; j < maticeA[i].length; j++) {
                System.out.format("%d",maticeA[i][j]);
            }
            System.out.println("");
           
        }
        //vypise prvky na hlavni diagonale

        int pocetPrvkuHLDiagonaly = Math.min(maticeA.length, maticeA[0].length);

        System.out.println("Prvky hlavni diagonaly:");
        for (int i = 0; i < pocetPrvkuHLDiagonaly; i++) {
            System.out.print(maticeA[i][i] + ". ");
        }
        System.out.println("");

        //zjisti od uzivatele dva indexy pro radky, ktere zameni
        // radky za sloupce
        Scanner vstup = new Scanner(System.in);
        System.out.println("Zadejte index radku k vymene: ");
        int index1 = vstup.nextInt();
        System.out.println("Zadejte index druheho radku k vymene: ");
        int index2 = vstup.nextInt();

        for (int i = 0; i < maticeA.length; i++) {
            for (int j = 0; j < maticeA.length; j++) {
                int[] pom = maticeA[index1];
                maticeA[index1] = maticeA[index2];
                maticeA[index2] = pom;

            }

        }

    }

}

Co tohle??

Nahlásit jako SPAM
IP: 82.113.48.–
Petr
~ Anonymní uživatel
746 příspěvků
1. 4. 2015   #4
-
0
-

#3 Petr
Paráda tohle už funguje. Sice ty vykřičníky stále mám ale aspoň, že se to vypíše :) v čem sem ale dělal chybu? protože když aplikuju tohle:   for (int j = 0; j < maticeA[i].length; j++) {
                System.out.format("%d",maticeA[i][j]);
            }

do to toho svého zadání tak mi to stejně nevypíše

Nahlásit jako SPAM
IP: 78.128.148.–
Petr
~ Anonymní uživatel
746 příspěvků
1. 4. 2015   #5
-
0
-

#4 Petr
Hele zacnem poporade. Co mas za ide? Jasne, ze ti to nic neda........pridal jsi toho malo. Co tohle?

public class DvourozmernePole {

    public static void main(String[] args) {
        int[][] maticeA = new int[5][4];
        //genereuj prvky matice z intervalu <-20; 20>
        for (int i = 0; i < maticeA.length; i++) {
            for (int j = 0; j < maticeA[i].length; j++) {
                maticeA[i][j] = -20 + (int) (41 + Math.random());
            }
        }

        //vypise zformatovane prvky matice
        for (int i = 0; i < maticeA.length; i++) {
            for (int j = 0; j < maticeA[i].length; j++) {
                System.out.format("%d", maticeA[i][j]);
            }
            System.out.println("");
        }

    }
}

Nahlásit jako SPAM
IP: 82.113.48.–
Petr
~ Anonymní uživatel
746 příspěvků
1. 4. 2015   #6
-
0
-

#5 Petr
myslim Netbeans ide? 8.0.2 .... jo tohle mi chodi vpohode ikdyz vykricniky tam mam stale

Nahlásit jako SPAM
IP: 78.128.148.–
ingiraxo+15
Grafoman
1. 4. 2015   #7
-
0
-

To si chatuješ sám se sebou ne? Já tam žádný vykřičníky nemám. Co přesně řešíš?

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
ingiraxo+15
Grafoman
1. 4. 2015   #8
-
0
-

   

public class Main
{
    private static final Random R = new Random();
    private static final Scanner SC = new Scanner(System.in);

    private int[][] createMatrix(int x, int y, int minMax)
    {
        int[][] matrix = new int[x][y];
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                matrix[i][j] = R.nextInt() % (minMax + 1);
            }
        }
        return matrix;
    }

    private void print(int[][] matrix)
    {
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                System.out.format("%d\t", matrix[i][j]);
            }
            System.out.println("");
        }
    }

    private void print(int[] array)
    {
        for (int i = 0; i < array.length; i++) {
            System.out.format("%d%s", array[i], (i < array.length - 1 ? "," : ""));
        }
    }

    private boolean isMatrix(int[][] matrix)
    {
        return (matrix.length == matrix[0].length);
    }

    /**
     * @param matrix Musi byt X == Y.
     */
    private int[] getMainDiag(int[][] matrix)
    {
        int[] tmp = null;
        if (isMatrix(matrix)) {
            tmp = new int[matrix.length];
            for (int i = 0; i < matrix.length; i++) {
                tmp[i] = matrix[i][i];
            }
        }
        return tmp;
    }

    /**
     * @param matrix Musi byt X == Y.
     */
    private void swapRowColumn(int[][] matrix)
    {
        if (isMatrix(matrix)) {
            System.out.printf("%nX: ");
            int x = SC.nextInt();
            System.out.print("Y: ");
            int y = SC.nextInt();

            for (int i = 0; i < matrix.length; i++) {
                int tmp = matrix[i][y];
                matrix[i][x] = matrix[y][i];
                matrix[y][i] = tmp;
            }
        }
    }

    public static void main(String[] args)
    {
        Main m = new Main();
        int[][] matrix = m.createMatrix(5, 5, 20); // 5x5 (-20 to +20)
        m.print(matrix);
        int[] mainDiag = m.getMainDiag(matrix);
        m.print(mainDiag);
        m.swapRowColumn(matrix);
        m.print(matrix);
    }
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 17 hostů

Podobná vlákna

Matice — založil nettinka

Matice — založil Frantisek

Matice — založil alda66

Matice — založil Frantisek

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý