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

Metoda na prevod poli – Java – Fórum – Programujte.comMetoda na prevod poli – Java – Fórum – Programujte.com

 

17. 7. 2015   #1
-
0
-

Ahojte.

Potreboval by som metodu na prevod dinamickeho pola na staticke pole.

Mam dva problemy:

1) aku navratovu hodnotu mozem dat do metody ak chcem aby mi vracala pole, ale vyalokovane staticke pole

2) ako previest pole (Integer) na pole (int)

prikladam aj navrh, ale dalej neviem ako.

dakujem

import java.util.*;

public class Hlava{
        public static void main(String[] args){

                Zmena zme = new Zmena();
                Scanner sc = new Scanner(System.in);
                int dimenzia;
                zme.velkost = sc.nextInt();
                zme.zmena(zme.velkost);
        }
}
~         

public class Zmena{

        public int velkost;

        public void zmena(int velkost){
                ArrayList<Integer> dim = new ArrayList<Integer>(velkost);
                for(int i=0;i<velkost;i++){
                        dim.add(1);
                }       
                Integer s_pole[] = new Integer[dim.size()];
                s_pole = dim.toArray(s_pole);
        }
}
Nahlásit jako SPAM
IP: 62.169.189.–
Kit+15
Guru
17. 7. 2015   #2
-
0
-

#1 Michal Konecny
Tu učebnici, podle které jsi to dělal, raději zahoď. Používá naprosto zcestné pojmenování tříd, objektů i metod a má chybnou terminologii.

Co je to "dynamické pole"? V ukázce ho nikde nevidím.

Návratovou hodnotu můžeš mít jakoukoli. Nejlépe objekt, ale může to být i primitivní datový typ.

Pole (Integer) převedeš na pole (int) cyklem. Proč bys to však dělal?

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:502e:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Notbeginner
~ Anonymní uživatel
185 příspěvků
18. 7. 2015   #3
-
0
-

  #2 Kit
Co je to "dynamické pole"? V ukázce ho nikde nevidím

ArrayList<Integer> dim = new ArrayList<Integer>(velkost);

Sice s tebou mluvit o Javě, je zbytečné ale toto je podle tebe co? Trojčlenka?   

Celý collection Framework = jsou dynamická pole. ( řečeno česky pole s proměnou velikostí)

2 Michal Konecny :

1) Cokoliv je možné použít jako deklaraci je možné využít jako navratový typ metod.

2) není nuno přepádět kolekci Integer na pole Integer. JVM od éry asi Java 4 nebo Java 5 za pomoci autoboxing/unboxing za tebe převede Integer na int sám.

		ArrayList<Integer> kolekce = new ArrayList<Integer>();
		kolekce.add(56);
		kolekce.add(new Integer(22));
		kolekce.add(456);
		System.out.println("Vypis kolekce : "+kolekce);
		int [] pole = new int [kolekce.size()];
		int i=0;
		for(int hodnota :kolekce){
			pole [i] = hodnota;
			i++;	}
		System.out.println("Vypis pole :" +Arrays.toString(pole));
Nahlásit jako SPAM
IP: 217.112.161.–
18. 7. 2015   #4
-
0
-

#3 Notbeginner
Dakujem

Nahlásit jako SPAM
IP: 62.169.189.–
Kit+15
Guru
18. 7. 2015   #5
-
0
-

#3 Notbeginner
ArrayList není dynamické pole, ale seznam implementovaný polem. Kromě toho se to správně píše takto: 

List<Integer> dim = new ArrayList<Integer>(velkost);
Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
NotBeginner
~ Anonymní uživatel
185 příspěvků
18. 7. 2015   #6
-
0
-

#5 Kit

viz. API  rozhrani List (http://docs.oracle.com/…il/List.html)

viz. API class ArrayList (http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html)

myslíš že jako je povinnost iniciovat objekt do rozhraní?  Jedná se pouze o jeden z přístupů a správnost je závislá na typu řešení. V jeho konrétním řešení je využívání List naprosto zbytečné tudíž použití class ArrayList je naprosto v pořádku.

Takže ještě jednou a pomaleji :

Celý collection Framework = jsou dynamická pole. ( řečeno česky pole s proměnou velikostí)

a pokud je ArrayList potomek třídy Collection pak i na něj se vztahuje tvrzení že je dynamické pole.

viz. např. (http://stackoverflow.com/questions/2426671/variable-length-dynamic-arrays-in-java) .. pochopeno?

Nahlásit jako SPAM
IP: 217.112.161.–
Kit+15
Guru
18. 7. 2015   #7
-
0
-

#6 NotBeginner
Pokud je to možné, tak je vždy nutné programovat nikoli proti implementaci, ale proti rozhraní. Budeš pak někdy chtít zaměnit ArrayList za LinkedList a zblázníš se z toho. Když tam použiješ rozhraní, tak změníš pouze ten jeden řádek.

Dynamické pole vzniká v Javě takto: 

int[] pole = new int[size];

podle hodnoty size se dynamicky vytvoří pole.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
NotBeginner
~ Anonymní uživatel
185 příspěvků
20. 7. 2015   #8
-
0
-

#7 Kit

Už jednou poukázal že s tebou nemá smysl. V C/C++ jsi možná frajer ale Java ti uniká. Žij si ve svém pojetí které v rozporu realitou a okolím. Takže ukončuji tuto diskuzi a byl bych rád kdybys ignoroval budoucí mé příspěvky a já budu ignorovat tvoje. Pro oba dva to bude přínosné, v mém případě si ušetřím nervy.

Nahlásit jako SPAM
IP: 217.112.161.–
Kit+15
Guru
20. 7. 2015   #9
-
0
-

#8 NotBeginner
Chápu. Realita a okolí == to, co dělá stádo. Jenže by bylo dobré, aby se to nováčci neučili podle stáda, ale tak, aby to bylo podle pravidel OOP i s příslušnou terminologií. Seznam prostě není dynamické pole.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:68cc:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
NotBeginner
~ Anonymní uživatel
185 příspěvků
21. 7. 2015   #10
-
0
-

#9 Kit

Co tu proboha meleš za bláboly? Netahej se žádné OOP. Drž se tématu.

To tvé polodemetní řešení dynamických polí nefunguje. CHÁPEŠ?

		int velikost = 10;
		int [] pole = new int [velikost];
		for(int j=0;j<pole.length;j++) pole[j]=j;
		System.out.println("Vypis pole :"+Arrays.toString(pole));
		velikost =5;
		for(int j=0;j<pole.length;j++) pole[j]=j+10;
		System.out.println("Vypis pole :"+Arrays.toString(pole));

Dynamická pole jsou pole které umožnují změnu velikosti v průběhu běhu programu. ( to jsou prostě kolekce - a ArrayList je jedna class vycházející s toho)

I na stackoverflow(http://stackoverflow.com/questions/2426671/variable-length-dynamic-arrays-in-java) to tak berou jenom nějaký Kit z české kotliny si myslí on tomu rozumí nejlépe. Kdybych si přečetl jednu knihu o Javě, pak bych tvůj názor bral ale vzhledem k tomu, že jsem si prostudoval min. 50 a samé v ENG, tak vím že všichni dynamická pole vysvětlují jako kolekce.

Závěr : ty jsi v této problematice naprosto mimo!!!!!!  A odmítám reagovat na tvé prostoduché, nekokrétní a nepromyšlené příspěvky.

PS. Mimochodem nikdo kdo tu umí programovat např. Flowy,Indidraxo,KIIV apod.. se k tvému argumentu vůbec nepřiklání(a žel bohu ani k mému   ).

PSS. z tvého vyjádření vyplívá že na stackoverflow jsou jenom ovce.  Dobrý joke, až na to, že člověk tam získá informace nad problémy které nikdo z této komunity programujte.com neví nebo nechce říci.

Nahlásit jako SPAM
IP: 217.112.161.–
KIIV
~ Moderátor
+43
God of flame
21. 7. 2015   #11
-
0
-

#10 NotBeginner
ja javu moc neresim, tak se az tak nevyjadruju :D

Jestli pouzije interface, nebo konkretni implementaci je na nem. Dynamicky je tam podle me i blbej Integer, kdyz se vsude musi davat new Integer(...) a je tam vsechno jako reference (krom par zakladnich typu, ktere neznaji ani unsigned).

Jinak kdyz na neco odpovidam, tak vetsinou neresim, ze to autor resi divne nebo nesmyslne (pokud to neni uplna kravina) - at na to, ze je to blbost prijde sam - tim se toho nauci vic, nez kdyz nakluse Kit a zacne vytykat co vse je tam blbe - to se spis bude snazit za kazdou cenu udelat to tak jak to ma ted, jen aby dokazal opak. A maximalne preroste zase ve flamewar :)

Mimochodem - utoky se samozrejme taky nehodi (ale uznavam, ze to neni nekdy ani trochu snadne), odkazy na "vyssi autoritu" jsou tez ukazkou toho, cemu se v retorice rika "pseudoargumenty". Je dobre si o tom pocist, je pak sranda poslouchat ci cist argumenty a predstavit si, ktery pseudoargument zrovna pouzili...

Nahlásit jako SPAM
IP: 212.47.3.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kit+15
Guru
21. 7. 2015   #12
-
0
-

#10 NotBeginner
Když mé řešení dynamických polí nefunguje, tak proč jsi ho použil ve svém řešení?

Java je (nebo se alespoň snaží být) objektovým jazykem. Proto je dobré v ní objektově nejen programovat, ale i objektově se vyjadřovat. stackoverflow.com je dobrý server, ale je nutné si uvědomit, že se tam vyjadřují běžní programátoři, kteří jsou zvyklí na starou terminologii z procedurálních jazyků. Pokud je v knize napsáno, že když chceme dynamické pole, musíme použít kolekci, tak je to v pořádku. Neznamená to však, že by kolekce byla dynamickým polem.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
21. 7. 2015   #13
-
0
-

#11 KIIV
V Javě se nedá udělat kolekce primitivních typů, ale pouze objektů. Proto se v daném místě musí použít třída Integer místo typu int.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
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, 14 hostů

Podobná vlákna

Hledání v poli polí — založil jaxx19

Největší v poli polí — založil Noneus

Metoda const — založil kas

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ý