Avatar
vasatom
Člen
Avatar
vasatom:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na vasatom
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
vasatom
Člen
Avatar
vasatom:

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

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

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ý
Redaktor
Avatar
Odpovídá na vasatom
Jan Vargovský:

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ý
Redaktor
Avatar
Odpovídá na vasatom
Jan Vargovský:
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:

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ý
Redaktor
Avatar
Odpovídá na vasatom
Jan Vargovský:
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:

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
Redaktor
Avatar
Odpovídá na vasatom
Kit:

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:

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:

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:

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.