Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: řádkování v poli

Aktivity
Avatar
vasatom
Člen
Avatar
vasatom:3.12.2013 14:03

Ahoj prosím o radu, mám takhle napsané pole, v čem dělam chybu že se mi to nevypíše jako matice, ale do sloupců pod sebe? díky moc

public static void main(String[] args) {
      System.out.println("Zadejte velikost pole:");
      Scanner sc = new Scanner(System.in);
      int n=sc.nextInt();

      int[][] pole= new int[n][n];
      System.out.println("Pocet radek pole: "+ pole.length);
      System.out.println("Pocet sloupcu pole: "+ pole[0].length);
      for (int i = 0; i <pole.length ; i++) {

          for (int j = 0; j < pole[i].length; j++) {
              pole[i][j]= i*1;
              System.out.println(pole[i][j] + " ");

          }


      }
 
Odpovědět
3.12.2013 14:03
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na vasatom
David Hartinger:3.12.2013 14:13

Každý prvek vypisuješ pomocí println, který způsobí odřádkování. Ty chceš odřádkovat jen s novým řádkem:

for (int i = 0; i <pole.length ; i++) {

           for (int j = 0; j < pole[i].length; j++) {
               pole[i][j]= i*1;
               System.out.print(pole[i][j] + " ");

           }
           System.out.println();

       }
Nahoru Odpovědět
3.12.2013 14:13
You are the greatest project you will ever work on.
Avatar
vasatom
Člen
Avatar
vasatom:3.12.2013 14:19

jo díky moc, nevšimnul jsem ti toho ln :)

 
Nahoru Odpovědět
3.12.2013 14:19
Avatar
vasatom
Člen
Avatar
vasatom:5.12.2013 23:16

Ahoj, ještě prosím o radu, máme předat tu matici jako parametr metodě vypis2D a pak to vypsat v tomto tvaru.
---Vysledky---
( 0): 0 0 0 0 0 0 0 0 0 0
( 10): 1 1 1 1 1 1 1 1 1 1
( 20): 2 2 2 2 2 2 2 2 2 2
( 30): 3 3 3 3 3 3 3 3 3 3
jak to prosím, zadám do té metody vypis2D?Ten NullPointerEx­ception mám dobře, když zadám nic, tak to nic nevypíše?
Díky moc za odpověď

public static void main(String[] args) {

       System.out.println("Zadejte velikost pole:");
       Scanner sc = new Scanner(System.in);
       int n=sc.nextInt();


       int[][] pole= new int[n][n];
       for (int i = 0; i <pole.length ; i++) {

           for (int j = 0; j < pole[i].length; j++) {
               pole[i][j]= i*1;


          vypis2D(pole);

           }



       }

       // TODO code application logic here
   }
   public static void vypis2D(int[][] pole) {

       System.out.println("---Vysledky---");
      if (pole==null)
       throw new NullPointerException



       System.out.print("("+")"+":" pole[i][j] );





   }}
 
Nahoru Odpovědět
5.12.2013 23:16
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na vasatom
Jan Vargovský:5.12.2013 23:20

Ono ti to vůbec zkompiluje, když neznáš proměnné i a j v metodě vypis2D ?

Btw ty 2 cykly mají být v té metodě vypis2D.

 
Nahoru Odpovědět
5.12.2013 23:20
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na vasatom
Jan Vargovský:5.12.2013 23:42
public class TestJavaApp {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[][] pole = new int[10][10];
        for (int i = 0; i < pole.length; i++) {
            for (int j = 0; j < pole[i].length; j++) {
                pole[i][j] = i;
            }
        }
        vypis2D(pole);
    }

    private static void vypis2D(int[][] pole) {
        System.out.println("---Vysledky---");
        for (int i = 0; i < pole.length; i++) {
            System.out.print("( " + i * pole[i].length + "): ");
            for (int j = 0; j < pole[i].length; j++) {
                System.out.print(pole[i][j] + " ");
            }
            System.out.println();
        }
    }
}
Editováno 5.12.2013 23:43
 
Nahoru Odpovědět
5.12.2013 23:42
Avatar
vasatom
Člen
Avatar
vasatom:6.12.2013 0:27

já jsem tam právě ten for cyklus měl, pro to vypisování, ale dal jsem blbě ten odkaz toho pole za složený závorky, což mi vypisovalo kraviny, tak jsem nevěděl v čem je chyba.Každopádně díky moc. Teď to funguje v pohodě, ale bohužel máme odevzdávací automat a chce to nějak zarovnaný, což netuším jak se udělá. To musím napsat zvlášť for pro řádek 0? Takhle to má vypadat

(   0):   0   0   0   0   0   0   0   0   0   0
(  10):   1   1   1   1   1   1   1   1   1   1
(  20):   2   2   2   2   2   2   2   2   2   2
(  30):   3   3   3   3   3   3   3   3   3   3
Editováno 6.12.2013 0:28
 
Nahoru Odpovědět
6.12.2013 0:27
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na vasatom
Jan Vargovský:6.12.2013 2:18
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[][] pole = new int[n][n];
        for (int i = 0; i < pole.length; i++) {
            for (int j = 0; j < pole[i].length; j++) {
                pole[i][j] = i;
            }
        }
        vypis2D(pole);
    }

    private static void vypis2D(int[][] pole) {
        System.out.println("---Vysledky---");
        for (int i = 0; i < pole.length; i++) {
            System.out.print("(" + padLeft(Integer.toString(i * pole[i].length), 4) + "): ");
            for (int j = 0; j < pole[i].length; j++) {
                System.out.print(padLeft( Integer.toString(pole[i][j]) , 4));
            }
            System.out.println();
        }
    }

     private static String padLeft(String s, int n) {
    return String.format("%1$" + n + "s", s);
  }

Co zapojit trošku svojí snahy, což ? :)

 
Nahoru Odpovědět
6.12.2013 2:18
Avatar
vasatom
Člen
Avatar
vasatom:6.12.2013 11:25

Prošel jsem si všechny tutoriály tady i co máme ve škole. Tohle to odsazování vůbec neznám a teď mi to pro změnu vyhazuje chybu v mezerách v matici, které mají být větší než jsou. Děkuju moc za pomoc, protože s tímhle jsem bezradnej.:(

 
Nahoru Odpovědět
6.12.2013 11:25
Avatar
Kit
Tvůrce
Avatar
Odpovídá na vasatom
Kit:6.12.2013 11:54

Metoda padLeft() je zbytečná. Dá se použít i System.out.format()

System.out.print("(%4s):", i * pole[i].length);
for (int j = 0; j < pole[i].length; j++) {
    System.out.format("%4s", pole[i][j]);
}
System.out.println();
Nahoru Odpovědět
6.12.2013 11:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
vasatom
Člen
Avatar
vasatom:6.12.2013 13:05

díky moc, ale prosím jak zadám, aby se mi změnily mezery mezi jednotlivými prvky v poli?

 
Nahoru Odpovědět
6.12.2013 13:05
Avatar
vasatom
Člen
Avatar
vasatom:8.12.2013 15:09

ahoj, tak už mám konečně správně to vypisování ale při odevzdání na mě vyskočily dvě chybové hlášky

  1. vypis2DdoesNo­tAcceptNullCo­rrectly(AlgPrin­tTest)
  2. vypis2DdoesNo­tAcceptDifferen­tRowLengthsCo­rrectly(AlgPrin­tTest)

jak se tam napíše prosím Vás, to testovaní na žádný vstup bude to pomocí if==null throw NullPointer Exception? v zadání mame že metoda vypis2D bude otestovánana na schopnost vypisovat matice s různě dlouhymi radky a nevypsání ničeho, pokud bude vstup null.
děkuji za rady

public static void main(String[] args) {
       System.out.println("Zadejte velikost pole:");
       Scanner sc = new Scanner(System.in);

       int n = sc.nextInt();
       int[][] pole = new int[n][n];
       for (int i = 0; i < pole.length; i++) {
           for (int j = 0; j < pole[i].length; j++) {
               pole[i][j] = i;
           }
       }
       vypis2D(pole);
   }

   public static void vypis2D(int[][] pole) {
       System.out.println("---Vysledky---");
       for (int i = 0; i < pole.length; i++) {
           System.out.format("(%4s):", i * pole[i].length);
           for (int j = 0; j < pole[i].length; j++) {
               System.out.printf(Locale.US, "%4d", pole[i][j]);

           }
           System.out.println();
       }
   }

   }
Editováno 8.12.2013 15:11
 
Nahoru Odpovědět
8.12.2013 15:09
Avatar
vasatom
Člen
Avatar
vasatom:8.12.2013 16:04

to otestování na null už mám, ale jak se udělá to ošetření na výpis různě dlouhých řádků netuším

 
Nahoru Odpovědět
8.12.2013 16:04
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.