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

Matice – Java – Fórum – Programujte.comMatice – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
brucak0
Newbie
2. 6. 2015   #1
-
0
-

Ahoj, rad bych vas pozadal o radu. Nedochazi mi, proc se my nevygeneruje matice metodou matka1.generuj(). Mohu poprosit o radu? diky

public class Matice {

    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        Matka matka1 = new Matka("matka1");
        Matka matka2 = new Matka("matka2");
        uvitej();
        pocetRadku(matka1);
        pocetSloupcu(matka1);
        matka1.generuj();
        matka1.vypis();
    }

    private static void uvitej() {
        System.out.println("Ahoj, vitej v programu Matice");
    }

    private static void pocetRadku(Matka m) {
        System.out.println("Zadej pocet radku matice " + m.getJmeno());
        m.setRadek(sc.nextInt());
    }

    private static void pocetSloupcu(Matka m) {
        System.out.println("Zadej pocet sloupcu " + m.getJmeno());
        m.setSloupec(sc.nextInt());
    }
}
package matice;


public class Matka {

    private String jmeno;
    private static int radek;
    private static int sloupec;
    private int [] [] pole = new int [this.getRadek()][this.getSloupec()];
    /**
     * @return the radek
     */
    public static int getRadek() {
        return radek;
    }

    /**
     * @param aRadek the radek to set
     */
    public static void setRadek(int aRadek) {
        radek = aRadek;
    }

    /**
     * @return the sloupec
     */
    public static int getSloupec() {
        return sloupec;
    }

    /**
     * @param aSloupec the sloupec to set
     */
    public static void setSloupec(int aSloupec) {
        sloupec = aSloupec;
    }
    
    
        
    Matka(String jmeno) {
        this.jmeno = jmeno;
    }

    /**
     * @return the jmeno
     */
    public String getJmeno() {
        return jmeno;
    }

    /**
     * @param jmeno the jmeno to set
     */
    public void setJmeno(String jmeno) {
        this.jmeno = jmeno;
    }

    void generuj() {
        System.out.println("generuj");
        for (int i = 0; i < pole.length; i++) {
            for (int j = 0; j < pole[i].length; j++) {
                pole[i][j] = (int)((Math.random()*1)+9);                
            }            
        }
    }

    void vypis() {
        System.out.println("vypis");
        for (int i = 0; i < pole.length; i++) {
            for (int j = 0; j < pole[i].length; j++) {
                System.out.print(pole[i][j]);                
            }
            System.out.println();
        }
    }
    
}
Nahlásit jako SPAM
IP: 82.113.48.–
Reklama
Reklama
JirkaEr0
Newbie
2. 6. 2015   #2
-
0
-

#1 brucak
Ahoj.

Problém bude tady v tomto řádku:

private int [] [] pole = new int [this.getRadek()][this.getSloupec()];

Totiž při vytvoření třídy inicializuje pole, kde v tu chvíli je matice velikosti [0] [0], protože počáteční inicializace proměnných radek a sloupec je 0.

Musíš tedy inicializovat pole až ve chvíli, kdy máš všechny hodnoty. Například metodou:

public void nastav(int radky, int sloupce)
{
	this.radek = radky;
	this.sloupec = sloupce;
	pole = new int [this.radek][this.sloupec];
}
Nahlásit jako SPAM
IP: 193.179.215.–
brucak0
Newbie
2. 6. 2015   #3
-
0
-

Díky, za radu. uz to neco dela. Ale ted mam trabl, ze se mi druha matice prekryje prvni. Podle me by nemela :-D 

Co a proc delam spatne?

package matice;

import java.util.Scanner;


public class Matice {

    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        Matka matka1 = new Matka("matka1");
        Matka matka2 = new Matka("matka2");
        uvitej();
        pocetRadku(matka1);
        pocetSloupcu(matka1); 
        pocetRadku(matka2);
        pocetSloupcu(matka2);
        matka1.nastav(matka1.getRadek(), matka1.getSloupec());
        matka2.nastav(matka2.getRadek(), matka2.getSloupec());
        matka1.generuj();
        matka1.vypis();
        matka2.generuj();
        System.out.println("");
        matka2.vypis();
    }

    private static void uvitej() {
        System.out.println("Ahoj, vitej v programu Matice");
    }

    private static void pocetRadku(Matka m) {
        System.out.println("Zadej pocet radku matice " + m.getJmeno());
        m.setRadek(sc.nextInt());
    }

    private static void pocetSloupcu(Matka m) {
        System.out.println("Zadej pocet sloupcu " + m.getJmeno());
        m.setSloupec(sc.nextInt());
    }
}
package matice;


public class Matka {

        

    private Matka m;
    private String jmeno;
    private static int radek;
    private static int sloupec;
    private int [] [] pole;
    /**
     * @return the radek
     */
    public static int getRadek() {
        return radek;
    }

    /**
     * @param aRadek the radek to set
     */
    public static void setRadek(int aRadek) {
        radek = aRadek;
    }

    /**
     * @return the sloupec
     */
    public static int getSloupec() {
        return sloupec;
    }

    /**
     * @param aSloupec the sloupec to set
     */
    public static void setSloupec(int aSloupec) {
        sloupec = aSloupec;
    }
    
    
        
    Matka(String jmeno) {
        this.jmeno = jmeno;
    }

    /**
     * @return the jmeno
     */
    public String getJmeno() {
        return jmeno;
    }

    /**
     * @param jmeno the jmeno to set
     */
    public void setJmeno(String jmeno) {
        this.jmeno = jmeno;
    }

    void generuj() {
        
        System.out.println("generuj");
        //System.out.println(pole.length);
        for (int i = 0; i < pole.length; i++) {
            for (int j = 0; j < pole[i].length; j++) {
                pole[i][j] = (int)((Math.random()*9)+1);                
            }            
        }
    }

    void vypis() {
        System.out.println("vypis");
        for (int i = 0; i < pole.length; i++) {
            for (int j = 0; j < pole[i].length; j++) {
                System.out.print(pole[i][j]);                
            }
            System.out.println();
        }
    }

    public void nastav(int radky, int sloupce)
{
	this.radek = radky;
	this.sloupec = sloupce;
	pole = new int [this.radek][this.radek];
}
    
}
Nahlásit jako SPAM
IP: 82.113.48.–
JirkaEr0
Newbie
3. 6. 2015   #4
-
0
-

#3 brucak
Druhá ti přepíše první proto, že máš statické metody (static).

Ani metody, ani proměnné (radek, sloupec) v tomto případě nesmí být statické.

Nahlásit jako SPAM
IP: 193.179.215.–
brucak0
Newbie
3. 6. 2015   #5
-
0
-

zase diky za radu. Ja nevim, me tyhle pristupy zatim nejsou moc jasny. To bude i dalsi problem. Mam metodu na scitani matic, ale hazi mi to nesmysly. Neco scitame spatne. Mohu poprosit o radu? diky

package matice;

import java.util.Scanner;

public class Matice {

    static Scanner sc;

    public static void main(String[] args) {
        Matka matka1 = new Matka("matka1");
        Matka matka2 = new Matka("matka2");
        Matka matkaScitani = new Matka("matkaScitani");
        uvitej();
        pocetRadku(matka1);
        pocetSloupcu(matka1);
        pocetRadku(matka2);
        pocetSloupcu(matka2);
        matka1.nastav(matka1.getRadek(), matka1.getSloupec());
        matka2.nastav(matka2.getRadek(), matka2.getSloupec());
        matka1.generuj();
        vypis(matka1);
        matka2.generuj();
        System.out.println("");
        vypis(matka2);
        System.out.println("");
        matkaScitani = matka1.scitaniMatic(matka2);
        vypis(matkaScitani);
    }

    private static void uvitej() {
        System.out.println("Ahoj, vitej v programu Matice");
    }

    private static void pocetRadku(Matka m) {
        boolean konec = false;
        do {
            sc = new Scanner(System.in);
            try {
                System.out.println("Zadej pocet radku matice " + m.getJmeno());
                m.setRadek(sc.nextInt());
                konec = true;
            } catch (Exception e) {
                System.out.println("Spatne zadane cislo " + m.getJmeno());
                konec = false;
            }
            
        }while (!konec);
        
    
    }

    private static void pocetSloupcu(Matka m) {
        boolean konec = false;
        do {            
            try {
                System.out.println("Zadej pocet sloupcu " + m.getJmeno());
            m.setSloupec(sc.nextInt());
            konec = true;
            } catch (Exception e) {
                System.out.println("Spatne zadane cislo " + m.getJmeno());
                konec = false;
            }
        } while (!konec);
    }

    private static void vypis(Matka m) {
        System.out.println("Vypsana matice " + m.getJmeno());
        m.vypis();
    }    
}
package matice;

public class Matka {

    private Matka m;
    private String jmeno;
    private int radek;
    private int sloupec;
    private static int[][] pole;

    private Matka(int radek, int sloupec) {
        this.radek = radek;
        this.sloupec = sloupec;
    }

    /**
     * @return the radek
     */
    public int getRadek() {
        return radek;
    }

    /**
     * @param aRadek the radek to set
     */
    public void setRadek(int aRadek) {
        radek = aRadek;
    }

    /**
     * @return the sloupec
     */
    public int getSloupec() {
        return sloupec;
    }

    /**
     * @param aSloupec the sloupec to set
     */
    public void setSloupec(int aSloupec) {
        sloupec = aSloupec;
    }

    Matka(String jmeno) {
        this.jmeno = jmeno;
    }

    /**
     * @return the jmeno
     */
    public String getJmeno() {
        return jmeno;
    }

    /**
     * @param jmeno the jmeno to set
     */
    public void setJmeno(String jmeno) {
        this.jmeno = jmeno;
    }

    public void generuj() {
        for (int i = 0; i < this.getRadek(); i++) {
            for (int j = 0; j < this.getSloupec(); j++) {
                pole[i][j] = (int) ((Math.random() * 9) + 1);
            }
        }
    }

    public void vypis() {
        for (int i = 0; i < 2; i++) {    //this.getRadek()
            for (int j = 0; j < 3; j++) { //this.getSloupec()
                System.out.print(pole[i][j] + " ");
            }
            System.out.println();
        }
    }

    public void nastav(int radky, int sloupce) {
        this.setRadek(radky);
        this.setSloupec(sloupce);
        pole = new int[this.getRadek()][this.getSloupec()];
    }

    Matka scitaniMatic(Matka pomocna) {
        Matka n = new Matka(this.radek, pomocna.sloupec);    
        try {
            if ((this.radek == pomocna.radek) && (this.sloupec == pomocna.sloupec)) {

                for (int i = 0; i < this.radek; i++) {
                    for (int j = 0; j < this.sloupec; j++) {
                        n.pole[i][j] = this.pole[i][j] + pomocna.pole[i][j];
                    }
                    System.out.println("");
                }
            } else {
                System.out.println("matice se nedaji secist");
                return null;
            }

        } catch (Exception e) {
            System.out.println("Problem pri scitani matic " + e);
        }
        return n;
    }
}
Nahlásit jako SPAM
IP: 82.113.48.–
ingiraxo+15
Grafoman
3. 6. 2015   #6
-
0
-

   

public final class Matice
{
    private String nazevMatice;
    private int pocetRadku;
    private int pocetSloupcu;
    private int[][] pole;

    public Matice(int pocetRadku, int pocetSloupcu)
    {
        nastav(pocetRadku, pocetSloupcu);
    }

    public Matice(String nazevMatice, int pocetRadku, int pocetSloupcu)
    {
        this(pocetRadku, pocetSloupcu);
        this.nazevMatice = nazevMatice;
    }

    public Matice(Matice matice)
    {
        pocetRadku = matice.pocetRadku;
        pocetSloupcu = matice.pocetSloupcu;
        pole = new int[pocetRadku][pocetSloupcu];
        prekopiruj(matice);
    }

    public void vygeneruj(int min, int max)
    {
        for (int i = 0; i < pocetRadku; i++) {
            for (int j = 0; j < pocetSloupcu; j++) {
                pole[i][j] = min + (int) (Math.random() * (max - min + 1));
            }
        }
    }

    public void vynuluj()
    {
        for (int i = 0; i < pocetRadku; i++) {
            for (int j = 0; j < pocetSloupcu; j++) {
                pole[i][j] = 0;
            }
        }
    }

    public void prekopiruj(Matice matice)
    {
        for (int i = 0; i < pocetRadku; i++) {
            for (int j = 0; j < pocetSloupcu; j++) {
                pole[i][j] = matice.pole[i][j];
            }
        }
    }

    public void vypis()
    {
        System.out.println("Název matice: " + nazevMatice);
        for (int i = 0; i < pocetRadku; i++) {
            for (int j = 0; j < pocetSloupcu; j++) {
                System.out.print(pole[i][j] + "\t");
            }
            System.out.println();
        }
    }

    public void nastav(int pocetRadku, int pocetSloupcu)
    {
        this.pocetRadku = pocetRadku;
        this.pocetSloupcu = pocetSloupcu;
        pole = new int[pocetRadku][pocetSloupcu];
    }

    public void set(int radek, int sloupec, int hodnota)
    {
        pole[radek][sloupec] = hodnota;
    }

    public int get(int radek, int sloupec)
    {
        return pole[radek][sloupec];
    }

    public Matice secti(Matice matice)
    {
        Matice m = new Matice(matice);

        for (int i = 0; i < pocetRadku; i++) {
            for (int j = 0; j < pocetSloupcu; j++) {
                m.pole[i][j] = pole[i][j] + matice.pole[i][j];
            }
        }
        return m;
    }

    public String getNazevMatice()
    {
        return nazevMatice;
    }

    public void setNazevMatice(String nazevMatice)
    {
        this.nazevMatice = nazevMatice;
    }

    public int getPocetRadku()
    {
        return pocetRadku;
    }

    public int getPocetSloupcu()
    {
        return pocetSloupcu;
    }

    public int[][] getPole()
    {
        return pole;
    }
}
public class Main
{
    public static void main(String[] args)
    {
        Matice m1 = new Matice("M1", 5, 5);
        m1.vygeneruj(0, 9);
        m1.vypis();
        System.out.println();

        Matice m2 = new Matice("M2", 5, 5);
        m2.vygeneruj(0, 9);
        m2.vypis();
        System.out.println();

        Matice m3 = m1.secti(m2);
        m3.setNazevMatice("M1 + M2");
        m3.vypis();
    }
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
brucak0
Newbie
4. 6. 2015   #7
-
0
-

#6 ingiraxo
Diky za tvoji verzi, ale neresi muj problem. Rad bych se drzel toho meho

Nahlásit jako SPAM
IP: 82.113.48.–
JirkaEr0
Newbie
4. 6. 2015   #8
-
0
-

#5 brucak
Ahoj,

rychlým pohledem vypadá vše ok.

Přidej sem prosím jaké máš vstupy, očekávané výstupy a skutečné výstupy.

Nahlásit jako SPAM
IP: 212.45.173.–
brucak0
Newbie
4. 6. 2015   #9
-
0
-

#8 JirkaEr
Cau, zadavam jenom pocet radku a sloupcu, pak se generuji nahodne cisla do dovu matic a pak se ty matice maji secist. takze tohle nejak je treba vstup a vystup

Ahoj, vitej v programu Matice
Zadej pocet radku matice matka1
2
Zadej pocet sloupcu matka1
3
Zadej pocet radku matice matka2
2
Zadej pocet sloupcu matka2
3
Vypsana matice matka1
6 4 4 
1 8 9 

Vypsana matice matka2
5 3 9 
7 2 4 

Vypsana matice null
10 6 18 
14 4 8 

Nahlásit jako SPAM
IP: 82.113.48.–
ingiraxo+15
Grafoman
4. 6. 2015   #10
-
0
-

#7 brucak 

Zkus tohle.. ten try-catch tam mas zbytecne a vytvoreni instance by si mel vytvaret az po kontrole velikosti.. jinak tam nevidim nic spatne

Matka scitaniMatic(Matka pomocna) {
	if (radek == pomocna.radek && sloupec == pomocna.sloupec) {
		Matka n = new Matka(radek, sloupec);
                n.nastav(radek, sloupec); // udelej jinak - do konstruktoru
		
		for (int i = 0; i < radek; i++) {
			for (int j = 0; j < sloupec; j++) {
				n.pole[i][j] = pole[i][j] + pomocna.pole[i][j];
			}
		}
		return n;
	} else {
		System.out.println("matice se nedaji secist");
	}
	return null;
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
brucak0
Newbie
4. 6. 2015   #11
-
0
-

#10 ingiraxo
ANOOOOOO, tohle mi tam chybelo. Ja vim, ze tohle neni nic moc reseni. Prekopu to, abych si to ujasnil postup. ale ted to chci dotahnout co jsem zacal. Moje vize byla takova, ze chci oddelit tridu instanci matic od tridy s main. Zatim diky, urcite se ozvu a pak to sem dam asi cely, abychom uzavreli cely vlakno. Diky

Nahlásit jako SPAM
IP: 82.113.48.–
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, 32 hostů

Podobná vlákna

Matice — založil Frantisek

Matice — založil alda66

Matice — založil plsicek

Matice — založil Frantisek

Moderátoři diskuze

 

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