PDA

Prikaži potpunu verziju : How to... Java


Strane : [1] 2

ivan90BG
20.12.2012, 22:57
Sad sam primetio da pored VB, C# i C++ nema How to... Java.

Elem, nije how to pitanje već više jedna observacija.

U sledećem Wikipedia članku http://en.wikipedia.org/wiki/Escape_analysis stoji sledeći primer iz Jave:

class A {
final int finalValue;

public A( B b ) {
super();
b.doSomething( this ); // this escapes!
finalValue = 23;
}

int getTheValue() {
return finalValue;
}
}

class B {
void doSomething( A a ) {
System.out.println( a.getTheValue() );
}
}


Probao sam i ovo jeste validan Java kod. Odnosno dozvoljeno je da se unutar konstruktora this referenca da kao argument nekoj metodi, ali onda objekat nije konstruisan do kraja, pa samim tim nije validan objekat klase A. I kao što sam i mislio kada se konstruiše A objekat na konzoli se odštampa 0.

Tako da u suštini ovo postavljam kao podsetnik da nije bezbedno pisati ovakav kod, iako Java kompjaler ne daje nikakva upozorenja. :)

p.s. Ovo takođe nije validan primer escepa-a pointera, jer referenca prosleđena metodi doSomething(A a) neće preživeti po završetku poziva te metode. This će svakako da escape-uje iz konstruktora, samo ne kroz taj poziv. Baš me čudi od Wikipedie. (naravno napisaću bolji primer i izmeniti članak)

Teva
20.12.2012, 23:28
Zar poenta primera nije da pokaže kako može da se "zezne" kompajler?
Da pokaže kako final može da ispiše dve vrednosti?

ivan90BG
20.12.2012, 23:53
To i nije tema članka. Primer bi trebalo sa pokaže da this referenca beži iz scope-a konstruktora, članak je primarno o kompajlerskim optimizacijama, odnosno o tome da kompjaler može da alocira objekat na stacku ako otkrije da nijedna referenca ka objekti kreiranog u nekoj metodi neće preživeti duže od života stack frame-a te metode. U onom primeru to jeste slučaj, ali je primer dat kao da pokaže da this "beži" kroz poziv doSomething, a kao prvo this objekat nije ni kreiran u konstruktoru, nego pre poziva konstruktora nad novim objektom, tako da se ovde i ne može pričati o bežanju jer this samo "prolazi" kroz konstruktor, pa kompjaler nema zašto da radi escape analizu.

A ovo sa konstantom i 23 je nevezano, ali opet takav kod ne bi trebalo da bude na Wikipediji u članku kome to nije tema.

problemNo1
15.1.2013, 22:45
Razvijam aplikaciju u Cloudify (http://www.gigaspaces.com/cloudify-open-paas-stack). To je sistem za praćenje raznih čudesa (resursa, niti itd), s tim što trebam nešto izmeniti a nešto dodati. Na nekom sam probnom radu za kanadsku firmu. Jedan od zadataka mi je da omogućim slanje alerta na email. Pošto nisam imao iskustva sa programiranjem groovy skripta, a Cloudify to koristi, treba mi pomoć nekoga ko je radio sa groovy fajlovima. Koristio sam neka rešenja sa neta (jedno od njih je recimo ovo: http://yves.vindevogel.net/projects/groovy/wiki/How_to_send_email_using_your_Gmail_account_with_a_ Groovy_script) ali dolazi do greške, da ne može učita klase MimeMessage i InternetAddress (dslEntity: 157: unable to resolve class MimeMessage) iako sam gore učitao pakete i stavio mail.jar u moj_jdk/lib folder. Gde grešim? Kako biste vi rešili ovaj problem sa emailom? Naišao sam takodje na primer slanja email pomoću AntBuildera ali ni to nije radilo (nije bilo greške ali mail nije poslat). Nisam siguran kako bi koristio čist java kod u groovy fajlovima pa bi molio za objašnjenje. (u tom slučaju bi verovatno koristio Java Mail API). U svakom slučaju meni je bitno da radi a kako bi to ostvario nije bitno. Da li mi za smtp treba svoj server ili mogu da koristim i Googlov kao u datom primeru? Takodje, može li neko "srpsko" objašnjenje šta je to Ant , šta Maven a šta String (ne String kao tip podataka u programiranju) i zašto Groovy a ne Java.

Verujem da se malo ljudi srelo sa pomenutom terminologijom jer koliko znam nije dosta popularna kod nas (možda grešim) i pretpostavljam da će tema imati mali odziv ali svaka informacija bi mi bila DOBRODOŠLA i bio bih stvarno ZAHVALAN na pomoći.

Pozdrav,
Aleksandar

BlueJ
21.1.2013, 22:14
Pocetnik sam u java programiranju. Radim jedan zadacic ali nikako da rijesim problem pa cu postavit slik da vidite sta se desava. Ovo mi je radilo ranije samo sto sad prvi put koristim kalendar pa mozda on pravi neki problem. Kaze da je do konstruktora ali evo slika:
Evo sta mi javlja u TEST klasi: http://s13.postimage.org/tptx4c8yt/test.jpg

Klasa koju testiram u testu: http://s7.postimage.org/3pmdcqbpl/love_Book.jpg

Inace treba da napravim 2 knjige koje ce da extenduju atribute klase Book, u te 2 knjige par metoda, read,save, nesto sa StringBufferom, exception kad nema podataka da ispise, nasledjivanje interfejsa itd... Naravno kao sto vidite knjiga treba da ima Autore, komentara itd...

BlueJ
21.1.2013, 22:51
Rijesih. nije mi jasno zasto nije htjelo na onaj prvi nacin kad sam u konstruktor pozivao. Ako neko zna neka napise puno bi mi pomogao :)
LoveBook lb1 = new LoveBook();
Author[] alb1 = { au };
lb1.authors = alb1;
lb1.name = "Ljubavna knjiga 1";
lb1.publishedDate = c;
lb1.publisher = "Oktoih";
Comment[] com = { co};
lb1.comments = com;
String gl[] = { "Lik 1", "Lik 2", "Lik 3" };
String citati[] = { "Citat 1", "Citat 2" };
lb1.characters = gl;
lb1.quote = citati;
lb1.description();
System.out.println("Save LB1");
try {
lb1.save("ljubavna_knjiga.txt");
} catch (NoData e) {
e.printStackTrace();
}

clzola
21.1.2013, 22:56
Ovako, mislim da je problem sto ti kada predajes autora, predajes jedan objekat, dok konstruktor zahtjeva niz objekata klase Autor. Mislim da ti je to glavni problem, i fino ti pise u erroru sta je problem :)

BlueJ
21.1.2013, 23:08
To je bilo prvo sto sam probao ali pogledaj na prvoj slici da sam dolje zakomentarisao niz objekata klase author i comments. Probao sam i sa nizom obj ali opet je isto izbacalo.
Sad cu jos nesto da isprobam pa javljam jesam li rijesio. Hvala puno.

BlueJ
21.1.2013, 23:34
Problem je bio sto nijesam pravilno upisao niz objekata autora u konstruktor umjesto auth kako sam ga nazvao pisao sam aut :(
Sad ga kompajlira i ispisuje ali save metoda ne radi. Radila je na ovaj prethodni nacin. Sad samo sacuva fajl ali ne i podatke. Ocigledno je da ne moze da procita ni jedan fajl jer mi i izbaca exception koji sam napravio kad je bilo koji podatak = null da izbaci FileNotFound exception "Fali podatak!". Takodje bez exceptiona cuva podatke...
String [] ch = {"char 1", "char 2", "char 3"};
String [] qu = {"quote1", "quote2", "quote3"};
String [] awards = {"awards1", "awards2", "awards3"};

Calendar c = Calendar.getInstance();
c.set(1990, 12, 12);
Author au = new Author("Marko ", "Markovic", c, awards, true, "Voli da kuva i sijece drva", false);
Author [] aut = {au};


Calendar c1 = Calendar.getInstance();
c1.set(1992, 10, 02);
Comment co = new Comment("Coomments 1", "hidden user", c1);
Comment [] comm = {co};

LoveBook lb1 = new LoveBook(ch,qu,"NAME",c1, "PUBLISHER", aut,comm);
lb1.description();
System.out.println("Save LB1");
try {
lb1.save("ljubavna_knjasdasdasdasdiga.txt");
} catch (NoData e) {
e.printStackTrace();
}

BlueJ
22.1.2013, 0:14
Rijesen i problem sa cuvajem podataka. Problem je bio sto sam stavio u exception da ukoliko nema podataka kalendara da javi FileNotFoundException.
Kad maknem kalendar iz exceptiona onda cuva ostale podatke.
Nije mi jasno zasto kalendar sacuva kad maknem potpuno exception a kad stavim exception i kalendar u njega onda ga ne cita?
Kroz exception ga ne prijavljuje a bez exceptiona je tu :)

krahi
11.4.2013, 2:05
Resio sam da malo prostudiram Android programiranje a pre toga malo Javu da istrazim.Skino sam Eclipse i krenuo da isprobavam neke trivijalne stvari.Imam solidno znanjem c# i jos par jezika pa sam pomislio citajuci po netu da ce Java biti dosta slicna.No,neki koncepti u Javi toalno su mi strani,pa reko da iskoritim priliku i priupitam ljude dobre volje...

Ovako glasi moj kod u C# :)
File.WriteAllText("d:\\krahi.txt", "text");

Ovo bi trebalo da je Java ekvivalent,koji nazalost ne funkcionise....
public class MojaKlasa {

public static void main(String[] args){
FileWriter writer = new FileWriter("D:\\krahi1.txt");
writer.write("krahi");
writer.close();
}
}
Eclipse nudi dve moguce ispravke

public class MojaKlasa {

public static void main(String[] args) throws IOException {
FileWriter writer = new FileWriter("D:\\krahi1.txt");
writer.write("krahi");
writer.close();
}
}

Posle dodavanja exceptiona u nastavku metoda,gore pomenuti kod radi.Medjutim taj koncept mi je nepoznat.Ako neko moze da objasni cemu sluzi.Jel mu to dodje isto kao try catch blok i u cemu je razlika?

Drugo resenje,na moje zaprepascenje je ovaj kod

public static void main(String[] args) {
FileWriter writer = null;
try {
writer = new FileWriter("D:\\krahi1.txt");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
writer.write("krahi");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

Ovo resenje sa milion try catch blokova,i ako je solidno ruzno i necitljivo,jos i ima nekog smisla(Ok znam da se moze napisati i sa jednim try catch blokom no ovo je eclipse sam generiso lol).Jel to znaci da svaki resurs koji koristim i koji potencijalno moze baciti exception,mora biti u try catch bloku,da bi uopste mogao kompajlirati kod?

water wizard
11.4.2013, 2:25
možda ima u opcijama da se isključi :D

Lucic Nemanja
11.4.2013, 2:48
U javi sve izuzetke koje metoda može potencijalno baciti moraš navesti throws klauzulom u potpisu metode, ili staviti sve u try/catch blok.
U ovom slučaju FileWriter može baciti IOException, i to jednostavno moraš navesti u potpisu metode ako nećeš da pišeš try/catch. Naravno kako ovde govorimo o main metodi, podrazumeva se da ćeš pisati try/catch blokove. Međutim kad budeš pisao neke druge klase i njihove metode, gde je praksa da se izuzeci samo bacaju, a korisniku klasa se otavlja da ih obrađuje, moraš eksplicitno reći koje izuzetke metoda može da baca. To je tako u javi i tome se moraš povinovati :D.
Da dodam još, prilikom implementiranja interfejsa ili nasleđivanja apstraktnih klasa pri redefinisanju njihovih metoda dozvoljeno ti je da suziš skup izuzetaka koje metoda baca od onog deklarisanog u interfejsu/apstraktnoj klasi, ali nikako da proširiš. Tako da ako skapiraš usput pri redefinisanju metode da će ti bacati neki izuzetak i dodaš ga u throws klauzulu te metode, moraš dodati i u onoj koju redefinišeš iz interfejsa/apstraktne klase.

Ivan452
11.4.2013, 13:23
Tek kada si okarakterisao taj deo koda kao nepregledan ukapirao sam koliko sam oguglao na try/catch blokove. :D
Navicices se vremenom, i nemoj da izbegavas hvatanje exceptiona, pre ili kasnije ce ti se obiti u glavu.
Posebno ako planiras rad sa Androidom, gde ce ti neka veza za internetom biti skoro obavezna, i moraces da hvatas i obradjujes exceptione.
A i bilo koje pisanje kvalitetnog koda ce zahtevati rad sa njima.

Srecno :)

clzola
13.5.2013, 20:39
Imam zadatak da napisem genericku klasu koja implementira AVL stablo. Podaci koji se cuvaju u stablu moraju implementirati interface Comparable.

Nije mi problem oko AVL stabla nego oko ovoga sto mora biti genericka klasa + da onaj INFO u cvoru implementira interface. Medjutim meni prijavljuje gresku ako ja probam da stavim ovako:


public class Node<T implements Comparable> {
T info;
Node left, right;
int balance;
}


Ali ovo prolazi lagano

public class Node<T extends Comparable<T>> {
T info;
Node left, right;
int balance;
}


Medjutim trazi se da bude Interface a ne da bude nasledjivanje...

Naravno i u drvetu stavljam

public class AVL<T extends Comparable<T>> {
Node<T> root;
....
}


Prosto ne znam kako da nadjem resenje da je klasa genericka a da elementi koji se cuvaju implemetiraju interface (a ne nasledjuju) Comparable.

Patrick
14.5.2013, 0:49
Mislim da ti treba u prvom kodu extends umesto implements. Na tom mestu jedino moze da stoji extends. Ako stavis "T extends Comparable" to ce da znaci da T koje tu dodje treba da implementira interfejs Comparable. Java zna da je Comparable interfejs i automatski posle proverava da li ta klasa koju kasnije navedes izmedju <i> implementira Comparable.
Seti se da i kad jedan interfejs prosiruje drugi interferjs koristi se rec extends a ne implements, pa je ovde valjda slican fazon.

Mozes o tome da procitas recimo ovde (http://docs.oracle.com/javase/tutorial/java/generics/bounded.html).

BlueJ
5.6.2013, 13:12
Pozdrav,

Treba mi pomoc. Treba da napravim niz slika koje ce na radnom da se vrte.

public void run(){
while(true){
Random r = new Random();
int key = r.nextInt(20);
slika.setIcon(new ImageIcon("img\\" + key +".jpg"));
}}

Ovako sam uspio da stavim da se vrte slike ali samo kad su nazivi slike sa nazvani sa brojevima od 1 do 20. Treba mi pomoc, naprimer ako se slike zovu: slika1.jpg, slika2.jpg...
Kako mi je najlakse da procitam sve slike iz foldera img? Lista, niz?

Andross
5.6.2013, 13:28
Pretrazi folder, sacuvaj sva imena slika u listu stringova i odatle vrti random.

NIx Car
8.6.2013, 18:51
Nisam java programer, ali zar ne bi mogao ovako to da uradis:
slika.setIcon(new ImageIcon("img\\slika" + key +".jpg"));
?

Ivan452
8.6.2013, 22:00
za ovo kao sto ti je Andross rekao.

A za ubuduce stavi Random r = new Random(); van petlje. Brze ce raditi.

PeTkO
12.6.2013, 14:42
Pozdrav

Poceo sam da ucim Javu, ne zato sto sam zeleo to, vec zbog faxa, ali opet, nikad nije na odmet nauciti jos neki jezik.

Imam jednu nedoumicu, tj. potrebno mi je malo objasnjenje...

Na primer, imam klasu sa imenom Klasa1. U drugoj klasi sa imenom Klasa2, imam inicijalizaciju promenljivih npr:
private Klasa1 ime;

Sta to zapravo znaci i sta to radi?

Drugo pitanje...
U Klasi2 imam definiciju neke metode...npr:
public void imeMetode(Klasa1 ime)

Nije mi jasno sta je ovo sto je u zagradi? Da li je tip parametra "ime" zapravo klasa? I ako jeste koji je to onda tip? Sta to radi :)

I trece pitanje...Kada u odredjenoj klasi imam metodu:
public String toString()
{
return "Neki tekst"
}
da li se ta metoda uvek sama poziva kada se pozove klasa ili ne?

Unapred hvala

Ivan452
12.6.2013, 15:30
Na primer, imam klasu sa imenom Klasa1. U drugoj klasi sa imenom Klasa2, imam inicijalizaciju promenljivih npr:
private Klasa1 ime;
Sta to zapravo znaci i sta to radi?

To je definisanje promenljivih. Inicijalizacija bi bila ime=new Klasa1();
private Klasa1 ime; znaci da si definisao promenljivu tipa Klasa1.
Kada npr. napises String naziv; String je isto klasa (kao i tvoja Klasa1) sa svojim metodama.


U Klasi2 imam definiciju neke metode...npr:
public void imeMetode(Klasa1 ime)
Nije mi jasno sta je ovo sto je u zagradi? Da li je tip parametra "ime" zapravo klasa? I ako jeste koji je to onda tip? Sta to radi

U zagradi definises koje ulazne parametre prima tvoja metoda. I da tip parametra "ime" jeste klasa.


public String toString()
{
return "Neki tekst"
}
da li se ta metoda uvek sama poziva kada se pozove klasa ili ne?


Ovo je malo komplikovanije, jer bi trebalo da se objasni nesto sto se naziva override-ovanje metoda i nasledjivanje (jer je svaka klasa potomak klase Object). Ali ukratko:
Ako napises tu takvu metodu u klasi kada ispisujes objekat te klase sa npr:
System.out.println(moj_objekat);
U konzoli ce ti izaci to sto pises u return-u, "Neki tekst".

Sve u svemu, kako se ova pitanja ticu se samih osnova Jave i objektno orjentisanog programiranja moja preporuka ti je da uzmes knjigu i krenes iz pocetka, promenljive, metode, klase, objekti.
I kako koji primer prelazis kucaj na kompu i isprobaj sve sto ti padne na pamet.
Bitno ti je da shvatis ove osnove, jer bez ovoga neces poloziti ispit.

PeTkO
12.6.2013, 16:51
Nije problem u knjizi (koju inace nemamo jer "nam nije potrebna"), vec u sturim prezentacijama sa predavanja (odakle ucimo, zamena za knjige) i prekucavanje koda (bez objasnjenja, ili vrlo malog) sa projektora na svoje racunare na vezbama...A ako studentu nesto nije jasno, tu je uvek google...
Nasao sam neke YT serijale klipova, pa cu da gledam odatle...

Teva
12.6.2013, 20:21
http://poincare.matf.bg.ac.rs/~stasa/OOP.html
Imaš tu kakve takve slajdove
A što se tiče knjige Horton je majka za javu :)
Imaš i ovde neke slajdove
http://poincare.matf.bg.ac.rs/~vladaf/Courses/Matf%20OOP/
Kao i navedenu literaturu, sobzirom da smo sličan fax verujem da će ti pomoći :)

BlueJ
29.7.2013, 12:56
Treba mi pomoc oko jednog programa. Napravim niz buttona koje stavim u panel. Pojave se dugmad ali ne znam kako da stavim sleep izmedju svakog pojavljivanja. Da bude jedno dugme pa sleep(100); pa sledece i tako dok se ne popuni niz. meni se sad svih 5 dugmadi automatski pojavi. Probao sam da stavim jednsotavno sleep izmedju dodavanja dugmadi ali nece tako.
Evo kod:
public void run(){
JButton [] butt= new JButton[5];
for(int i=0; i<butt.length; i++){
butt[0] = new JButton();
butt[1] = new JButton();
butt[2] = new JButton();
butt[3] = new JButton();
butt[4] = new JButton();

paneli[i].add(butt[0]).setBackground(Color.blue);
paneli[i].add(butt[1]).setBackground(Color.blue);
paneli[i].add(butt[2]).setBackground(Color.blue);
paneli[i].add(butt[3]).setBackground(Color.blue);
paneli[i].add(butt[4]).setBackground(Color.blue);
butt[i].setVisible(false);
butt[i].setVisible(true);
}

ivan90BG
29.7.2013, 13:46
Sleep bi trebalo da se stavi između poziva setVisible(). Mislim da ti ne trebaju setVisible(false), dovoljno je samo sa true.

Samo malo pojasni šta imaš i šta radiš, da bi mogli da rešimo. Čini mi se da imaš 5 panela, i u svaki stavljaš po 5 digmadi. Ali ne pozivaš setVisible za svih 25 dugmadi.

Sad ne znam kako tačno radi Swing ali moguće da može da dođe do neke kolizije između sleep-a i renderinga prozora i kontrola (odnosno da se prikaz ne renderuje odmah po pozivu setVisible). Ako neko zna da nije ovako, onda ništa.

Ivan452
29.7.2013, 14:31
Nema potrebe da pravis pauzu izmedju dodavanja dugmica, napravi je samo izmedju njihovog prikazivanja.

Znaci dugmice dodaj na panel standardno i neka budu nevidljiva. I onda u posebnom threadu odradi za svako dugme butt[i].setVisible(true); i odmah posle toga Thread.sleep(100);

BlueJ
29.7.2013, 15:47
E ovako, da objasnim prvo zadatak.
Treba da napravim 5 panela i u svaki panel po 5 kvadratica. Stim kvadratici nesmiju rucno da se generisu.
Kvadratici trebaju da se popunjavaju tipa u prvi panel 1,2,3,4,5 pa onda slijedi drugi panel 1,2,3,4,5 i tako sve do kraja.

Ja sam napravio GUI klasu i u njoj 5 panela, kad kliknem start trebaju kvadratici da pocnu da se popunjavaju u panele.
Evo kako izgleda kod u GUI: http://postimg.org/image/hdnxxljp7/
dizajn: http://postimg.org/image/aykbn6nln/
I na kraju kad pokrenem program dobijem ovo: http://postimg.org/image/y2pdtigaj/
Prvi panel se popuni ali je problem sto popuni prva 4 kvadratica i onda tek odradi pauzi i peti i tako na isti nacin i ostale panele.

import java.awt.Button;
import java.awt.Color;
import java.util.Random;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;


public class Display extends Thread{
private int speed;
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
private JPanel [] paneli;


public JPanel[] getPaneli() {
return paneli;
}

public void setPaneli(JPanel[] paneli) {
this.paneli = paneli;
}

public void run(){
JButton [] butt= new JButton[5];
for(int i=0; i<butt.length; i++){
butt[0] = new JButton();
butt[1] = new JButton();
butt[2] = new JButton();
butt[3] = new JButton();
butt[4] = new JButton();

paneli[i].add(butt[0]).setBackground(Color.blue);
try {
sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
paneli[i].add(butt[1]).setBackground(Color.blue);
try {
sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
paneli[i].add(butt[2]).setBackground(Color.blue);
try {
sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
paneli[i].add(butt[3]).setBackground(Color.blue);
try {
sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
paneli[i].add(butt[4]).setBackground(Color.blue);


butt[i].setVisible(false);
try {
sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
butt[i].setVisible(true);
}


while(true){

}
}
}

Ivan452
29.7.2013, 19:22
Da li je moguce da pauzu od 100ms i ne vidis? da primetis tek poslednju posto je ona 1sec?

Ivan452
29.7.2013, 19:24
Da li je moguce da pauzu od 100ms i ne vidis? da primetis tek poslednju posto je ona 1sec?

P.S
Ako ti na 5 panela treba po 5 dugmica, da li si siguran da zelis da rasporedjujes 5 istih ili ti mozda treba 25?

BlueJ
29.7.2013, 19:55
Testirao sam sa 1000ms tako da je isto :)
Ja sam ovaj zadatak ranije odradio samo mi isto pauza nije radila. Nemogu da se sjetim kako sam uradio ali nijesam ovako generisao dugmad. Znam da sam u niz stavio 5 dugmadi i u if stavio koje ce boje da budu i to je to ali sad nema sanse da mogu da napravim. Ni sa 5 ni sa 25 :)

ivan90BG
29.7.2013, 20:56
Probaj ovako.


public void run(){
JButton[] butt= new JButton[5];
for(int i = 0; i < paneli.length; i++) {
for (int j = 0; j < butt.length; j++) {
butt[j] = new JButton();
paneli[i].add(butt[j]).setBackground(Color.blue);
}
for (int j = 0; j < butt.length; j++) {
butt[j].setVisible(false);
try {
sleep(500);
} catch (InterruptedException e) {}
butt[j].setVisible(true);
paneli[i].repaint();
}
}
}

BlueJ
30.7.2013, 0:26
Ovo radi isto kao i moje. Manje je koda ja sam ono bukvalno ispisao :)
Evo jar fajl: http://www.sendspace.com/file/yhicr0

BlueJ
30.7.2013, 0:53
Dodjoh do nekog rjesenja samo jos da stavim tu pauzu da mi prikazuje normalno :)
JAR fajl: http://www.sendspace.com/file/piy3ar
Ovo za boje je toliko jednsotavno ali dzabe kad nemogu da se sjetim, nije me bog dao za programiranje :)
public void run(){
JButton[] butt= new JButton[5];
for(int i =0; i<butt.length; i++){
JButton b = new JButton();
b.setVisible(false);
butt[i] = b;
paneli[i].add(butt[i]);

}
while(true){
for(int i=0; i<butt.length; i++){
if(i==0){
butt[i].setBackground(Color.green);
}
if(i==1){
butt[i].setBackground(Color.blue);
}
if(i==2){
butt[i].setBackground(Color.yellow);
}
if(i==3){
butt[i].setBackground(Color.white);
}
if(i==4){
butt[i].setBackground(Color.black);
}
try {
sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
butt[i].setVisible(true);
}
}
}

ivan90BG
30.7.2013, 1:09
Evo ti ovo. Provereno radi :)


public void run() {
JButton[] butt = new JButton[5];
for (int i = 0; i < this.paneli.length; i++)
{
for (int j = 0; j < butt.length; j++)
{
butt[j] = new JButton();
this.paneli[i].add(butt[j]).setBackground(Color.blue);
try {sleep(500L);} catch (InterruptedException e) {}
butt[j].setVisible(false);
butt[j].setVisible(true);
paneli[i].repaint();
}
}
}

BlueJ
30.7.2013, 11:36
Ovo zadnje rjesenje mi u jedan panel stavi automatski 5 dugmadi onda pauzira i doda jos 5 dugmadi u isti panel. Znaci 10 u prvi panel stavi pa onda istu stvar i za ostale :)

BlueJ
30.7.2013, 11:47
for(int i=0; i<butt.length; i++){
if(i==0){
butt[i].setBackground(Color.green);
}
if(i==1){
butt[i].setBackground(Color.blue);
}

Ovo mi nikako nije jasno.
Naprimer ako je na 0 on bi trebao da oboji u zeleno prvo dugme a ne svih 5 dugmadi kojih se nalazi u panel? Nesto sam pogresno uradio zato nemogu pauzu da napravim izmedju dugmadi vec mi pravi pauzu izmedju svakih 5 dugmadi.
Moze li biti da je problem ovdje? Ustvari tu i jeste problem koliko vidim :), a ono tvoje rjesenje je ispravno a i ovo vjerujem samo je ovdje problem.



private JButton getBtnStart(){
if(btnStart == null){
btnStart = new JButton("Start");
btnStart.setBounds(120, 217, 97, 25);
btnStart.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JPanel [] i = {panel, panel_1, panel_2, panel_3, panel_4, panel_5};
d= new Display();
d.setPaneli(i);
d.start();

d1= new Display();
d1.setPaneli(i);
d1.start();

d2= new Display();
d2.setPaneli(i);
d2.start();

d3= new Display();
d3.setPaneli(i);
d3.start();

d4= new Display();
d4.setPaneli(i);
d4.start();
}
});
}
return btnStart;
}

ivan90BG
30.7.2013, 12:07
Ako hoćeš da imaš dugmad raznih boja, samo napravi niz boja.


public void run()
{
JButton[] butt = new JButton[5];
Color[] colors = { Color.BLUE, Color.GREEN, Color.RED, Color.YELLOW, Color.ORANGE };
for (int i = 0; i < this.paneli.length; i++)
{
for (int j = 0; j < butt.length; j++)
{
butt[j] = new JButton();
this.paneli[i].add(butt[j]).setBackground(colors[j]);
try {sleep(500L);} catch (InterruptedException e) {}
butt[j].setVisible(false);
butt[j].setVisible(true);
paneli[i].repaint();
}
}
}


I previše misliš o ovome. U ovome što si poslednje stavio si napravio 5 threadova, što apsolutno ne treba. Srž je da samo treba da ideš kroz niz panela i u svaki panel dodaš 5 dugmadi, a sleep treba da pozivaš između svakog dodavanja (naravno treba ubaciti i setVisible i repaint panela da bi sve radilo). Nema šta da razvijaš nauku. Ja sam ti samo pomogao sa dodatkom repaint-a. Čini mi se kao da si počeo nasumično da bacaš kod da vidiš da li će upaliti :D

BlueJ
30.7.2013, 12:45
Evo sto meni izbaca sa tim kodom zadnjim koji si mi napisao.
http://www.sendspace.com/file/982suo
Uglavnom blizu sam rjesenja hvala ti puno :)

ivan90BG
30.7.2013, 13:39
Pa kreiraj samo jedan thread. Odnosno ne trebaju ti 5 instanci Display-a već samo jedna. Znači samo jedan Display kreiraj, daj mu niz panela i startuj ga. I to je to. :)

Metoda koja kreira dugme Strat treba da bude ovakva:


private JButton getBtnStart() {
if (this.btnStart == null) {
btnStart = new JButton("Start");
btnStart.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JPanel[] i = { panel, panel_1, panel_2, panel_3, panel_4, panel_5 };
d = new Display();
d.setPaneli(i);
d.start();
}
});
btnStart.setBounds(120, 217, 97, 25);
}
return btnStart;
}

BlueJ
30.7.2013, 14:09
Razumio sam :)
Hvala ti puno!

NIx Car
5.10.2013, 10:28
public void paint(Graphics g)
{
//neki kod
while(true)
{
//opeet neki kod
}

Zanima me kako da iskocim iz ovog beskonacnog ciklusa... Probao sam preko keyEventa nesto da radim ali se to sve zavrsilo bezuspesno....
Treba da iskocim iz ciklusa kada se pritisne neko dugme (kao funkcija kbhit() u C-u ).

Teva
5.10.2013, 12:02
Nisam dugo radio javu ali bi trebalo da postoje listeneri koji reaguju na dugme(keyListener) koje bi trebao da naslediš i doimplementiraš...
Neko prosto rešenje bi bar po meni bilo, da negde u vajlu imaš liniju

if(ind) break;

gde će ind biti po defaultu false. A listener će da okine kad već treba i da postavi ind na true.

voodoo_
5.10.2013, 13:09
Nije pametno da radiš "busy wait" samo da bi čekao pritisak na taster, bolje prouči kako radi KeyListener (odnosno klasa KeyAdapter koja implementira interfejs KeyListener).

http://home-1.worldonline.nl/~bmc88/java/sbook/024.html

Krilce
6.10.2013, 20:28
Isto tako, najbolje je da definises bool promenljivu, pa da nju koristis kao uslov za while, umesto samo da ispises true. U tom slucaju bi jednostavno mogao i promenljivu da postavis na false, u zavisnosti od toga da li zelis da iz petlje iskocis pre, ili posle odredjenog koda. Nema razlike u performansama i takvim stvarima, ali se obicno ovo preporucuje zbog mogucih kasnijih gresaka.

I, da, break takodje radi posao.

prozor_xp
21.10.2013, 18:58
Kako da napravim program u kojem cu ja sam da unosim znak u zavisnosti od operacije koju zelim da izvodim (mnozenje, deljenje....)? Ja umem da napisem program koji ili samo deli ili samo mnozi...... A ja hocu da program moze sve racunske operacije da obavlja. Evo kako sam ja napisao program.

Scanner in = new Scanner(System.in);
int a;
int b;
boolean cycle = true;
while (cycle){
System.out.println("unesite prvi broj");
a = in.nextInt();
System.out.println("unesite drugi broj");
b = in.nextInt();
int rezultat = a + b;
System.out.println("Zbir unetih brojeva je: " + rezultat);

dsl94
21.10.2013, 19:57
Koristi switch naredbu :D

Stavi da proverava koji je znak unet i u zavisnosti od toga radi odredjenu operaciju :D

prozor_xp
21.10.2013, 20:01
Koristi switch naredbu :D

Stavi da proverava koji je znak unet i u zavisnosti od toga radi odredjenu operaciju :D

Kako to da izvedem?


I jel zna neko kako da isprogramiiram stopericu?

MG-RAY
21.10.2013, 20:30
Uzmes trenutnu vrednost vremena (System.nanoTime()), sačekaš neko vreme (način zavisi od toga šta pokušavaš da postigneš), uzmeš novu vrednost od nano time i oduzmeš, nakon toga pretvoriš vrednost u sekunde/milisekunde. Voila, imaš štopericu. :)

prozor_xp
21.10.2013, 20:37
Uzmes trenutnu vrednost vremena (System.nanoTime()), sačekaš neko vreme (način zavisi od toga šta pokušavaš da postigneš), uzmeš novu vrednost od nano time i oduzmeš, nakon toga pretvoriš vrednost u sekunde/milisekunde. Voila, imaš štopericu. :)

Nisam razumeo bas najbolje, jel moze to malo blize? Izvini pocetnik sam. :)

MG-RAY
21.10.2013, 21:15
Može:


long pocetak = System.nanoTime();

// radis nesto sta vec zelis da izmeris, ili npr cekas dok korisnik pritisne neki taster, šta već...
// ***
// ***

long kraj = System.nanoTime();

long proteklo = kraj - pocetak; // proteklo vreme u nanosekundama

prozor_xp
21.10.2013, 21:25
Ali ja bih hteo da stisnem start i da ono pocne da odbrojava, i kada pritisnem stop da ono prestane da odbrojava. I da pocinje od 0 a ne od sistemskog vremena. Jel moze tako nesto da se nabudzi? :)

NIx Car
21.10.2013, 23:55
Prvo ti nauci koncepte programiranja preko konzole (posto vidim da ti neke osnovne stvari nisu jasne) pa se tek onda baci na GUI. Bratski savet. :)

dsl94
22.10.2013, 0:55
Kako to da izvedem?




Sto se tice racunskih operacija i switch naredbe moze da se uradi ovako


switch(operand) {
case '+': c = a+b; break;
case '-': c = a-b; break;
case '*': c = a*b; break;
case '/': c = a/b; break;
default: "Greska"; break;
}

Krilce
23.10.2013, 18:05
Sto se tice racunskih operacija i switch naredbe moze da se uradi ovako


switch(operand) {
case '+': c = a+b; break;
case '-': c = a-b; break;
case '*': c = a*b; break;
case '/': c = a/b; break;
default: "Greska"; break;
}


@prozor_xp

Samo da dodam da je String kao argument za Switch uveden tek u Java7, dok se pre toga moralo raditi preko enumeracija. Tako da, ukoliko kompajler izbacuje gresku za ovaj kod, znaj da ili nemas jre7 na kompu, ili ti je samo po defaultu postavljena sestica.

Takodje, mozda bi bilo najbolje da nadjes neku knjigu, ili tutoriale(za javu ih ima mali milion), i da lepo krenes da radis po tome. Em ces biti usmeren, em ces sam morati da mucnes glavom, sto je najbolji nacin za ucenje programiranja. Za pocetnike je odlicna http://www.amazon.com/Head-First-Java-2nd-Edition/dp/0596009208, s obzirom da je sve objasnjeno pomocu ogromnog broja slika i citljivog teksta.

Twisterzemun
25.10.2013, 18:23
public void paint(Graphics g)
{
//neki kod
while(true)
{
//opeet neki kod
}

Zanima me kako da iskocim iz ovog beskonacnog ciklusa... Probao sam preko keyEventa nesto da radim ali se to sve zavrsilo bezuspesno....
Treba da iskocim iz ciklusa kada se pritisne neko dugme (kao funkcija kbhit() u C-u ).

A da uradis ovo?

public void paint(Graphics g)
{
//neki kod
oznaka : while(true)
{
//opeet neki kod
break oznaka;
}
Nov sam u Javi, tako da izvinite ako sam lupio glupost :D

prozor_xp
25.10.2013, 20:31
Kako da mi se brojevi ne ponavljaju kada izaberem random naredbu?
Na primer hocu da mi izabere random 10 brojeva ali da mi ne ispise dvaput isti broj.

prozor_xp
25.10.2013, 20:36
evo i kod:

public class H {

public static void main(String[] args) {
Random dice = new Random();
int number;

for(int counter = 1; counter<=10; counter ++){
number = 1+dice.nextInt(10);
System.out.println(number +" ");
}

}
}


i kako sad da podesim da svi brojevi budu razliciti?

i u eclipsu iz nekog razloga nemam opciju visual class, kako da je ubacim?
i jel imate neki dobar tutorial u vezi grafickog programiranja u javi?

Krilce
25.10.2013, 22:18
A da uradis ovo?

public void paint(Graphics g)
{
//neki kod
oznaka : while(true)
{
//opeet neki kod
break oznaka;
}
Nov sam u Javi, tako da izvinite ako sam lupio glupost :D

Nisu ti potrebne labele, i u sustini bi trebalo da ih izbegavas. Dovoljno je da unutar petlje ostavis "break;" .

Twisterzemun
26.10.2013, 17:21
Nisu ti potrebne labele, i u sustini bi trebalo da ih izbegavas. Dovoljno je da unutar petlje ostavis "break;" .

A sta ako imam nekoliko ugnjezdenih petlji i hocu odjednom da izadjem iz svih? Dakle hocu da izbegnem iterativno izlazenje iz petlji.

Laslo Kraus mi je cak i preporucio labele...

Teva
26.10.2013, 20:58
Jel može neko da mi objasni kako da podelim posao u 3 niti?

Problem je sledeće prirode, imam n poslova, svaki posao može da radi samo jedna nit, takođe jedna nit može da radi samo jedan posao. Imam k niti.

Kako da kada se svaka nit završi, prebacim podatke iz nje, i pokrenem sledeću nit?

MG-RAY
26.10.2013, 22:31
Ja bih koristio ExecutorService (http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html). Možeš da ga kreiraš sa fixnim threadpool-om (brojem niti koji ti je neophodan, k), a nakon toga mu submittujes poslove.

Ovaj način podrazumeva da ćeš imati tri niti koje će redom izvršavati taskove dok postoje.

@Twisterzemun
Ako već ne želiš više breakova, prebaci samu petlju u poseban metod i uradi return. Ili jednostavno sredi kod tako da ne moraš više petlji da koristiš, ako nije neophodno. Inace, Kraus... :rolleyes:

Ivan452
27.10.2013, 1:16
Jel može neko da mi objasni kako da podelim posao u 3 niti?

Problem je sledeće prirode, imam n poslova, svaki posao može da radi samo jedna nit, takođe jedna nit može da radi samo jedan posao. Imam k niti.

Kako da kada se svaka nit završi, prebacim podatke iz nje, i pokrenem sledeću nit?

http://www.javacodegeeks.com/2013/01/java-thread-pool-example-using-executors-and-threadpoolexecutor.html

prozor_xp
27.10.2013, 12:09
Kako bi trebao da izgleda kod uz pomoc kojeg mozete da citate cpu temperaturu (ili bilo koji drugi parametar na racunaru)?

Ivan452
27.10.2013, 13:55
Kako bi trebao da izgleda kod uz pomoc kojeg mozete da citate cpu temperaturu (ili bilo koji drugi parametar na racunaru)?

Dobijanje ovakvih informacija od hardvera nije bas tako lak posao. Sumnjam da ces negde naci jednu liniju koda ili gotovu open source biblioteku koja ce ti pruziti te informacije.
Problem je sto razliciti tipovi hardvera imaju razlicite tipove senzora i ne postoji neki API koji ce sve to unificirati i dati ti komunikacioni sloj.

Takodje, JAVA je vrlo los izbor za takvu low lever komunikaciju sa harverom.

Ono na sta mogu da te uputim, sto ti mozda moze pomoci je sledece:
http://www.cpuid-pro.com/
Medjutim, to se placa (poprilicno).

Druga, opensource, varijanta je:
http://www.lm-sensors.org/

Krilce
27.10.2013, 18:01
A sta ako imam nekoliko ugnjezdenih petlji i hocu odjednom da izadjem iz svih? Dakle hocu da izbegnem iterativno izlazenje iz petlji.

Laslo Kraus mi je cak i preporucio labele...

U tom slucaju mozes da izdvojis ugnjezdene petlje u jedan metod, i da iskoristis return. Izbegavaj labele zato sto narusavaju citljivost koda. Ako se ikada u zivotu budes bavio programiranjem(sirok pojam, ali da ne zalazim u dubinu), zahvalices kolegi ciji kod koristis zato sto je koristio "lepo pisanje". U slucaju da nije, najverovatnije ces mu spomenuti familiju par puta.


public void someMethod() {
loop(); //nazovi nekim deskriptivnijim imenom
//do something
}

public void loop() {

for(int i = 0; i < 5; i++) {
for(int j = 1; j < 4; j++) {
if(i * j > 10)
return ;
}
}
}

Goonotora
27.10.2013, 18:03
Ove akademske godine sam poceo da radim u Javi, vecina stvari mi je manje vise poznata iz C i C#, ali sam naisao na zadatak gde mi se stvara nedoumica.

Zadatak je modifikacija jednog primera koji sam imao na predavanjima. U primeru je vec navedena klasa Tacka i klasa Kruznica. Mod koji se trazi je da program procita dinamicki niz kruznica, uredi niz po opadajucem redosledu povrsina kruznica i ispise dobijeni rezultat.

Ako sam dobro shvatio, deo koda treba da bude unos niza (prvo se unosi broj clanova niza, a zatim parametri pojedinih elemenata), zatim sortiranje povrsina kruznica po opadajucem redosledu, i na kraju ispis rezultata. Ali tu ima nekoliko zackoljica:

- Da li ja poredim objekte (kruznice), ili niz brojeva(vrednosti povrsina)?
- Da li se od mene ocekuje da napravim kod za sortiranje, ili bi trebalo da koristim Javinu ugradjenu klasu koja ima te metode?

Inace, koristim razvojno okruzenje NetBeans za kodiranje.

voodoo_
27.10.2013, 18:32
1. Nadam se da znaš da niz objekata u Javi zapravo predstavlja samo niz referenci na objekte, koji zauzimaju neku drugu memoriju od fizičke memorije tog niza referenci. Ti ispituješ taj niz kao niz brojeva (npr. if kruznice[i].povrsina() > kruznice[j].povrsina()), ali sortiraš reference (Kruznica tmp = kruznice[i], kruznice[i] = kruznice[j], kruznice[j] = tmp). Dakle kod sortiranja npr. celih brojeva, poredio bi vrednosti i onda bi kopirao vrednosti iz elementa u element, ovde porediš vrednosti (ili neki drugi parametar, zavisno od postavke zadatka), a premeštaš reference.

2. Verovatno bi trebalo sam, s obzirom da je u pitanju školski zadatak. Najlakše ti je koristeći navedeni bubble sort.

Ivan452
28.10.2013, 0:48
- Da li ja poredim objekte (kruznice), ili niz brojeva(vrednosti povrsina)?
- Da li se od mene ocekuje da napravim kod za sortiranje, ili bi trebalo da koristim Javinu ugradjenu klasu koja ima te metode?
Inace, koristim razvojno okruzenje NetBeans za kodiranje.

Zavisi od toga dokle ste vi stigli sa javom.
- Ako je akcenat na sortiranju onda pises svoj kod za sortiranje i sortiras niz brojeva (vrednosti povrsina).
- A ako u prvom planu trebaju da budu klase, onda to radis sa implementacijom interfejsa Comparable. Evo finog tutorijala za to:
http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/

Moj savet ti je da uradis i jedno i drugo. Neka korisnik unese kruznice i onda mu ponudi dve opcije gde ces da implementiras i jednu i drugu varijantu.

MrDzeri
2.11.2013, 19:42
Zna li neko nesto o nizovima, listama, stekovima u Javi ?

Krilce
2.11.2013, 21:16
Zna li neko nesto o nizovima, listama, stekovima u Javi ?

Previse je opsirno pitanje. Sta te konkretno zanima? U sustini, sve informacije mozes naci na oficijalnom sajtu sa tutorialima i dokumentacijom.

List interface (http://docs.oracle.com/javase/tutorial/collections/interfaces/list.html)
Arrays (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html)

Sto se tice Stacka, izbegavaj javinu klasu. Bolje napisi svoju uz pomoc LinkedList , ukoliko zelis da bude prosiriv.

Jedna napomena. Kada definises Listu, Mapu, ili nesto slicno, uvek koristi interfejs, umesto prave klase, odnosno :

List<String> nekaLista = new ArrayList<String>();
ili
List<String> nekiVektor = new Vector<String>();

umesto

Vector<String> nekiVektor = new Vector<String>();

Stevvan
2.11.2013, 21:16
To su strukture koje manje vise funkcionisu slicno u svakom jeziku :) Mozes pogledati na wikipediji ili bilo gde kako funkcionisu, ostalo je samo pitanje sintakse

Ivan452
2.11.2013, 21:40
@MrDzeri

Moraces da budes malo precizniji sa svojim pitanjem.
Niz, lista i stack su gotovo univerzalni pojmovi u programiranju koje spadaju u osnovne strukture podataka. Pozeljno je da o tome naucis na jednom apstraktnijem nivou i da se ne vezujes odmah za konkretan programski jezik.
Predpostavljam da ti treba za fakultet. Kada se to radi na fakultetu uglavnom se ne koriste gotova resenja u javi kao sto su ti preporucili, vec se od vas ocekuje da znate da napravite svaku od ovih struktura podataka.

Niz je serija objekata koji su istog tipa, ti objekti su elementi niza. Nizovi mogu imati vise dimenzija, jednodimenzionalni se zovu vektori a dvodimenzionalni su matrice.
Na slici ti je pokazan jednodimenzionalni niz.
http://2.bp.blogspot.com/_ynkoLGkpwXY/TFV2iMt48vI/AAAAAAAAAlY/WzmaDdkJP6M/s1600/c-array-1d-ex.jpg

Lista (uglavnom se misli na povezanu listu) ima fleksibilnu strukturu. Moze se dinamicki povecavati, smanjivati, elementi se mogu ukloniti na svakom mestu. Njeni elementi su poredjani u linearnom redosledu. Kod niza je taj poredak implicitan na osnovu indeksa niza (u primeru 0,1,2,3,4) a u listi je odredjen pokazivacem u svakom elementu.
Da ne zalazim dalje u teoriju o listama, lista je struktura u kojoj svaki njen element ima pokazivac na sledeci. Postoje dalje podele listi, dvostruko spregnute su one kod kojih svaki element ima pokazivac na sledeci i na predhodni element i ciklicno (kruzno) povezane liste gde poslednji element pokazuje na prvi.

http://img.c4learn.com/2010/02/Addres-and-Linked-List-Node-Strucutre-in-Programming.jpg

Stek je specijalna vrsta liste kod koje se dodavanje i uklanjanje elementara obavlja na jednom kraju koji se naziva vrh. Primer za ovo bi ti bile PEZ bombone spakovane u one njihove drzace. Gde da bi dosao do druge bombone moras prvo da izvadis prvu. Ovo je LIFO sistem, Last In First Out. Znaci poslednja bombona koju ubacis nju ces prvu da pojedes.
Push se oglavnom naziva stavljanje elementa na stack a Pop vadjenje elementa sa stack-a.

http://upload.wikimedia.org/wikipedia/commons/2/29/Data_stack.svg

Ovo je sve samo vrlo grubo objasnjeno. Ne znam da li ti je ista od ovog jasno. Ali, smatram da su ovo vrlo bitni koncepti programiranja. Tako da moja preporuka ti je da uzmes neku knjigu koja se bavi strukturama podataka ili osnovama algoritama (uglavnom je pre algoritama objasnjeno sta je niz, lista, stack i red).
Krenes prvo od niza, kada ti bude jasna teorija sta je niz, uzmes i proguglas kako da napravis niz u javi. i tako redom.

MrDzeri
3.11.2013, 19:11
Ma mi to ucimo na fakultetu ali nije najbolje objasnjeno .. Ajde FIFO i LIFO znam nekako.. ali liste, gdje moram da pravim posebnu klasu (nesto)Node , bas ne razumijem.. za sta sluzi taj Node ?
Hvala na ovom objasnjenju, dosta razumljivo :)

Ivan452
3.11.2013, 21:09
Ajmo onda ovako. Ja cu ti objasniti osnove, ali ako te ovo zaista zanima proguglaj malo i dopuni svoje znanje. Ako planiras da se u buducnosti bavis programiranjem, koristice ti ovo.
U ovom primeru cu ti objasniti najjednostavniju (jednostruko povezanu, neciklicnu) listu.

Node (cvor) uglavnom oznacava jedan element liste i da te ne bunim od sada cu taj termin koristiti.
Node se sastoji od dve celine:
- podatka koji nosi
- pokazivaca na sledeci Node.
To podseca malo na lanac, i izgleda ovako:
http://upload.slike.com/slike/2013/11/1383504548-260-x-39px-260px-Node_chain.svg.png

Ovde imamo tri Node-a. NodeA, NodeB i NodeC.
NodeA u sebi ima pokazivac na NodeB, a NodeB u sebi ima pokazivac na NodeC. U ovoj listi NodeC ima pokazivac na NULL (na taj nacin znamo da smo dosli do kraja liste).
U listi imas samo pokazivac na to koji je prvi Node u njoj (u ovom slucaju NodeA). Sve ostale Node-ove dobijas pocevsi od prvog.

E sada to bi ovako izgledalo u javi:


public class Node
{
String nodeName; //informacija u Node-u
Node nextNode; //pokazivac na sledeci node

//konstruktor
public Node(String nodeName)
{
this.nodeName=nodeName;
this.nextNode=null;
}
}

Znaci, ovde mi imamo String nodeName. To je neki podatak koji Node nosi. To moze da bude bilo sta. U jednom Node-u moze biti vise promenljivih, objekti klasa koje si ti napisao itd.
Pored toga imamo nextNode, koji predstavlja pokazivac na sledeci Node u listi.
Implementacija ovoga bi bila sledeca.

public class Glavna
{
public static void main(String[] args)
{
Node nodeA = new Node("A");
Node nodeB = new Node("B");
Node nodeC = new Node("C");

nodeA.nextNode = nodeB;
nodeB.nextNode = nodeC;

System.out.println(nodeA.nodeName); //ovo ce ispisati: A
System.out.println(nodeA.nextNode.nodeName); //ovo ce ispisati: B
System.out.println(nodeA.nextNode.nextNode.nodeNam e); //ovo ce ispisati C
}
}

I to je to.


P.S.
Kako bih bio dosledan onome sta sam napisao da imas podatak o tome koji je prvi Node. Ispravna implementacija Glavne klase za ovaj primer u javi bi izgledala ovako (samo main klasa izgleda drugacije). Namerno sam ti prvo onaj primer ostavio zato sto je mozda laksi za razumevanje sustine.

public class Glavna
{
public static void main(String[] args)
{
Node nodeA = new Node("A");

nodeA.nextNode = new Node("B");
nodeA.nextNode.nextNode = new Node("C");

System.out.println(nodeA.nodeName); //ovo ce ispisati: A
System.out.println(nodeA.nextNode.nodeName); //ovo ce ispisati: B
System.out.println(nodeA.nextNode.nextNode.nodeNam e); //ovo ce ispisati: C
}
}
Ovde je jedina razlika ta sto do podatka o tome sta se nalazi u drugom i trecem Node-u ne mozes nikako doci ako ne krenes od prvog.

Dalje proucavanje bi ti bilo na koji nacin ide zamena elementa, ubacivanje, sortiranje liste, brisanje, pravljenje dvostruko povezane liste, ciklcine liste, itd, itd.
BITNA STVAR Ovaj primer nije totalna implementacija liste u javi. Da bi ovo bilo potpuno morao bi da napises klasu List (ili kako god hoces da je nazoves) koja bi imala pokazivac na prvi Node, potom insert i delete funkcije.
To ti sada ne bih pisao zato sto bi te nepotrebno zbunilo. Kada budes dalje o listama citao primer imas ovde: http://stackoverflow.com/questions/10042/how-do-i-implement-a-linked-list-in-java

*Uslovno koristim rec pokazivac, nemoj da mesas sa pokazivacima iz C-a. To se razlikuje u javi i C-u.

MrDzeri
4.11.2013, 20:09
Hvala na ovako iscrpnom objasnjenju! Sad je dosta toga jasnije.. Mi ucimo i programiramo svaki posebno.. Posle par odradjenih zadataka nadam se da cu jos bolje razumjeti..

Teva
5.11.2013, 16:47
Jel može neko da mi kaže jel su Bag i HashSet isto u javi?

Pošto u 1.7 javi ne mogu da nađem Bag -.-

Ivan452
5.11.2013, 20:47
Mislim da Bag imas samo pod Apache common, da ne postoji direktna implementacije toga u javi.

A da li je HashSet i Bag isto...pa nije. tj. Zavisi od implementacije Bag-a, ali HashSet koristi hash tabelu.
Medjutim, u praksi, zavisi od toga sta ti treba mozes da postignes istu funkcionalnost ako koristis HashSet umesto Bag-a (cak dobar deo funkcionalnosti mozes da pokrijes i sa List).

NIx Car
20.11.2013, 22:28
"Programiram" u javi vec dva i po meseca ali mi idalje nesto nije jasno (posto sam nov u objektnom svetu skroz):

Kako je moguce da se neka metoda (kao na primer paint metoda) ili neki dogadjaj pozovu bez njihovog implicitnog pozivanja u main-u?

voodoo_
20.11.2013, 23:18
Zato što kad uradiš "new Frame()", u konstruktoru se Frame prijavi odgovarajućem GUI podsistemu koji će se baviti crtanjem prozora, i tada registruje svoje callback metode (među kojima je i Paint) koje će taj podsistem pozivati.

E sad, kako zaista funkcioniše iscrtavanje GUI-ja, to zavisi od operativnog sistema, recimo na Windowsu se bukvalno vrti beskonačna petlja koja proverava da li se desio neki event, pa na kraju opali repaint, i tako u krug. Ovde imaš više slojeva apstrakcije iznad toga, pa ne moraš da okrećeš nikakve petlje već Frame, kao što rekosmo, registruje svoje callback metode koje će potom underlying podsistem automatski pozivati kad zatreba.

Poenta je da tvoja funkcija main nije jedini thread koji se izvršava, jer da jeste, ne bi mogao da napraviš i održavaš prozor tek tako u četiri linije koda.

Malo sam konfuzan, al ako ne razumeš, imaš izvorni kod svih Java klasa kad instaliraš JDK, otvori pa gledaj :)

Ivan452
20.11.2013, 23:27
@Nix

Paint nije bas 'bilo koja' metoda. To je override-ovana metoda.
Stvar je u tome sto prilikom dodavanja neke komponente (npr Frame-a) automatski se poziva metoda paint.

Na jednostavnijem nivou, to je isto kao kada u svojoj klasi override-ujes metodu toString, i onda kada uradis System.out.println(objekat_tvoje_klase) on ispise sta god si mu rekao u toString.
Kao sto kada uradis println objekta on pozove toString, tako kada dodas graficku komponentu ona pozove paint.


P.S
Pomesao si termine 'implicitno' i 'explicitno'.

NIx Car
21.11.2013, 11:40
Mislim da sam ukapirao... Posto me je gomila stvari i oko dogadjaja bunila... profesor mi je poslao kako ja sam da napravim svoj dogadjaj... Izgleda jako konfuzno ali ukapiracu i to :D

NIx Car
28.11.2013, 21:26
Imam klasu Krugovi u kojoj sam napravio konstruktor

public Krugovi()
{
Random r = new Random();
x = r.nextInt(800);
y = r.nextInt(600);
}

I sad u mainu sam napravio niz objekata tipa Krugovi
Krugovi[] kr = new Krugovi[5];

I kada zelim da prikazem vrednost x ili y, vrednost bilo kog x ili y ne postoji, tacnije java opali exception. Zasto?

Krilce
29.11.2013, 22:52
Imam klasu Krugovi u kojoj sam napravio konstruktor

public Krugovi()
{
Random r = new Random();
x = r.nextInt(800);
y = r.nextInt(600);
}

I sad u mainu sam napravio niz objekata tipa Krugovi
Krugovi[] kr = new Krugovi[5];

I kada zelim da prikazem vrednost x ili y, vrednost bilo kog x ili y ne postoji, tacnije java opali exception. Zasto?

Zato sto nigde nisi instancirao krugove.

Krugovi[] kr = new Krugovi[5];

Ovim si samo rekao da ce ovaj niz sadrzati 5 objekata tipa Krug, ali ti je taj niz trenutno prazan. Kada pokusas da pristupis elementu unutar praznog niza, dobijes null pointer exception, iliti "nema niceg".

U for petlji napuni taj niz krugovima.

Krug[] krugovi = new Krug[5];

for(int i = 0; i < krugovi.length; i++) {
krugovi[i] = new Krug();
System.out.println(krugovi[i].getX() + " " + krugovi[i].getY());
}

I, da, mala napomena sto se tice imenovanja klasa, objekata, itd. Tebi ova klasa predstavlja jedan krug, a ti si je imenovao Krugovi, sto se, naravno, odnosi na mnozinu. Moze ti se u projektu desiti da moras da npr. serijalizujes kolekciju krugova, sto bi znacilo da bi ti bila potrebna klasa koja ce kao atribut imati neku kolekciju koja ce sadrzati objekte tipa Krug. Takvu klasu, koja se odnosi na kolekciju objekata, bilo bi ok nazvati u mnozini, iliti Krugovi. "k" takodje nije deskriptivan naziv za niz krugova.

Verujem da zvucim kao neko matoro zakeralo, ali zamisli da su tvorci jave davali imena atributima i klasama na taj nacin. Zamisli kolika bi zbrka ispala iz svega toga, pa kad trazis atribut koji se zove "color", a ono imas samo nesto sto se zove "c". Najverovatnije ne bi ni pretpostavio da je u pitanju ono sto tebi treba. Ili da radis na nekom projektu, a moras da desifrujes kod kolege, i da trazis sta je "c", sta je"k", sta je "a", itd. Rezultat = manjak kose, kraci zivci, manjak produktivnosti. :D

NIx Car
30.11.2013, 16:46
Skontao sam to maaalo kasnije (gde sam napravio gresku). Takodje sam i ime klase izmenio. :)
Imam jos gomilu problema sa kojima se susrecem oko rada na ovom zadatku, ali cu probati sam da ih resim, pa ako zapnem , javljam se :)

ivan90BG
1.12.2013, 23:47
Dok Nix radi ja bih zatražio pomoć oko Jave.

Pravim program sa JavaFX-om koji crta vektorsku grafiku na Canvas. Jel zna neko da li se oblik (path) formiran pozivima lineTo, arcTo, itd može ikako obrisati, ili ta staza ostaje zanavek zakucana na tom Canvas-u. Sad mi nije problem sa pravougaonicima i ostalim mnogouglovima (jer postoje metode za direktno crtanje i punjenje linija, pravougaonika, poligona), ali za komplikovanije ne vidim kako da implementiram.

Teva
8.12.2013, 15:54
Nisam nešto preterano upoznat sa javom, ali ne možeš da brišeš path sa canvasa kolko znam. Moraš da brišeš ceo canvas, ili ja msm da postoji metoda za brisanje dela canvasa (clearRectangle ili tako nešto)

Krilce
8.12.2013, 17:45
Mozda da iskoristis MVC sablon, tako da razdvojis element i njegov shape, pa da imas nesto sto ce brinuti o iscrtavanju elemenata na canvas, tako da posle samo obrises citav element, umesto da pokusavas da brises sam shape. Brainstorming. :D

Ivan452
8.12.2013, 21:55
Mozda da iskoristis MVC sablon, tako da razdvojis element i njegov shape, pa da imas nesto sto ce brinuti o iscrtavanju elemenata na canvas, tako da posle samo obrises citav element, umesto da pokusavas da brises sam shape. Brainstorming. :D

MVC pattern se ne koristi za te stvari. Za ovu problematiku sto si ti spomenuo koristi se Command patern ili Memento.

Krilce
8.12.2013, 22:27
MVC pattern se ne koristi za te stvari. Za ovu problematiku sto si ti spomenuo koristi se Command patern ili Memento.

Mislio sam da ti treba citava aplikacija za tako nesto, pa da nju odradis po MVC-u. :) Moguce da nisam najbolje razumeo pitanje.

Belfegor
11.12.2013, 21:03
Ako je neko online, treba mi pomoc sa jednim testom za skolu....radi se o validaciji, uradio sam sve, bar mislim ali svejedno u polja za slova mogu da pisem brojeve i obrnuto....u pitanju je javascript

Ivan452
11.12.2013, 21:19
Objasni malo bolje problem (nisam siguran da je ovo tema za JS). Iz ovog napisanog deluje mi kao posao za regularni izraz.

Belfegor
11.12.2013, 21:53
Sredjeno...falila jedna zagrada i kosa crta :D

ivan90BG
21.12.2013, 16:04
Kako da u Swing-u namestim da prozor (JFrame ili JDialog) ima tanak okvir (špicaste ivice, tanak title bar, ima samo close dugme)? To se u Win32 zove WS_EX_TOOLWINDOW.

http://www.hhdsoftware.com/doc/hex-editor/images/Base-Converter-Tool-Window.png

Ivan452
21.12.2013, 16:40
Kako da u Swing-u namestim da prozor (JFrame ili JDialog) ima tanak okvir (špicaste ivice, tanak title bar, ima samo close dugme)? To se u Win32 zove WS_EX_TOOLWINDOW.

http://www.hhdsoftware.com/doc/hex-editor/images/Base-Converter-Tool-Window.png

probaj sa

JFrame frame = new JFrame();
frame.setUndecorated(true);
frame.setShape(new RoundRectangle2D.Double(10, 10, 100, 100, 50, 50));
frame.setSize(300, 200);
frame.setVisible(true);

ivan90BG
21.12.2013, 19:46
To nije to :opanachke

Ali otkrio sam kako da to uradim. Treba da se koristi JNA biblioteka.


import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef.*;
//...
JFrame frame = new JFrame();
long ptr = Native.getWindowID(frame);
HWND hwnd = new HWND(new Pointer(ptr));
User32.INSTANCE.SetWindowLong(hwnd, User32.GWL_EXSTYLE, 0x80);
frame.setVisible(true);


0x80 je vrednost Win32 #define konstante WS_EX_TOOLWINDOW koja (uključujući i mnoge druge) nije definisana u JNA biblioteci.

Inače, desilo mi se nešto neverovatno, skinuo sam JNA, ubacio u projekat, otkucao ovaj kod, i proradio je kako je očekivano iz prve, što mi se desi jednom u 2 meseca. :D

voodoo_
21.12.2013, 21:22
S tim što si izgubio multiplatformnost, pošto direktno gađaš USER32.DLL koji je Windows-specific... doduše ne znam koliko ti je to bitno za projekat.
Ovo između "new JFrame" i "frame.setVisible" bi mogao da proveriš u rantajmu preko System.getProperty("os.name"), ali ne znam oko ovih importova gore, da li u Javi postoji neki ekvivalent C-ovskom "#ifdef _WIN32 #include <to_i_to.h>"...

ivan90BG
21.12.2013, 22:05
Ne brini, mislim ja na multiplatformnost od početka. ;) Još ranije sam definisano apstraktnu klasu PlatformUtils koja ima podklase za Windows i Mac OS X, gde su razne utility metode za platformski specifične stvari (koja će biti instancirana određuje se baš na osnovu os.name, a i os.version). A ovaj kod gore je samo ono što na stack overflow zovu minimal working example.

NIx Car
12.1.2014, 1:04
import java.applet.Applet;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.CubicCurve2D;

public class Luk extends Applet implements Runnable, MouseMotionListener {

private int drawY = 200;
private int y;
CubicCurve2D cubicCurve;

@Override
public void init() {

setSize(800, 480);
setBackground(Color.BLACK);
setFocusable(true);
addMouseMotionListener(this);
Frame frame = (Frame) this.getParent().getParent();
frame.setTitle("Luk");
cubicCurve = new CubicCurve2D.Double();
}

@Override
public void start() {
Thread thread = new Thread(this);
thread.start();
}

@Override
public void stop() {
// TODO Auto-generated method stub
}

@Override
public void destroy() {
// TODO Auto-generated method stub
}

@Override
public void run() {
while (true) {

repaint();
try
{
Thread.sleep(18);
}catch(InterruptedException e){}
}
}



public void paint (Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
g.setColor(Color.RED);

cubicCurve.setCurve(110, 50, 300,drawY, 200, drawY, 600, 50);
g2.draw(cubicCurve);
}

@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub

}

@Override
public void mouseMoved(MouseEvent e) {


}
}

Treba mi ideja kako da, kada korisnik klikne na levi klik (ubacicu i one metode za MouseListener), sve dok ga ne pusti, menja velicinu luka u zavisnosti od trentutne pozicije misa (kao u paintu kada pravite zakrivljenu liniju pa podesavate kako ce biti zakrivljena)

I didn't came up with anything.. :o

Ivan452
12.1.2014, 2:40
Izvoli ovo:

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.QuadCurve2D;
import javax.swing.*;
import javax.swing.border.*;

class Main extends JFrame {

private int tool = 1;
int currentX, currentY;
QuadCurve2D q = new QuadCurve2D.Float();
Graphics2D g2d;
public Main() {
initComponents();
}

private void initComponents()
{
jPanel2 = new Panel2();
q.setCurve(1, 2, 200, 200, 100, 200);
jPanel2.setBackground(new java.awt.Color(255, 255, 255));
jPanel2.setBorder(BorderFactory.createBevelBorder( BevelBorder.RAISED));

jPanel2.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent evt) {
jPanel2MouseDragged(evt);
}
});

this.setContentPane(jPanel2);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
pack();
}

private void jPanel2MouseDragged(MouseEvent evt) {
if (tool == 1) {
currentX = evt.getX();
currentY = evt.getY();
q.setCurve(1, 2, currentX, currentY, 100, 200);
jPanel2.repaint();
}
}

public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new Main().setVisible(true);
}
});
}

private JPanel jPanel2;

class Panel2 extends JPanel {

Panel2() {setPreferredSize(new Dimension(420,420));}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASI NG, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.draw(q);
}
}
}

Na brzinu sam 'zbudzio' od nekog starog koda koji sam imao. Sa tim sto ja nisam crtao krivu vec kvadrat koji je menjao velicinu (ali je isti princip).
Mozda kod nije najlepsi, ali radi ;)

X i Y koordinate pocetne i krajnje tacke krive su fiksirane u kodu, prilikom prevlacenja se menja samo zakrivljenje. Verujem da ce ti to biti dovoljno da iskoristis u svom projektu.

P.S
Moja preporuka je da krivu odvojis kao poseban objekat i onda da mozes da joj lako menjas i ostale atribute po zelji.
I nemoj tvoju klasu da nazivas 'Luk', jer luk(arc) i kriva(curve) nisu isto.

NIx Car
12.1.2014, 12:32
Prvo sam mislio da mi treba luk, pa sam shvatio da mi ipak treba kriva,ali nisam preimenovao klasu :D

To tvoje resenje je cak i bolje od mog koje sam planirao da implementiram tj taj oblik mi je vise odgovarao.

E sad, jedina stvar koja mi je preostala je ta da moram da izvucem koordinate svakog piksela posto cu kasnije morati da stavim da mi se neki objekat krece po toj krivoj... Ideja mi je da imam array listu tipa Point u koji cu da ubacujem tacke te krive (sa for each-om), ali to mi ne deluje izvodljivo posto nemam neku metodu da mi vrati odredjenu tacku...

Ivan452
12.1.2014, 23:16
Prvo sam mislio da mi treba luk, pa sam shvatio da mi ipak treba kriva,ali nisam preimenovao klasu :D

To tvoje resenje je cak i bolje od mog koje sam planirao da implementiram tj taj oblik mi je vise odgovarao.

E sad, jedina stvar koja mi je preostala je ta da moram da izvucem koordinate svakog piksela posto cu kasnije morati da stavim da mi se neki objekat krece po toj krivoj... Ideja mi je da imam array listu tipa Point u koji cu da ubacujem tacke te krive (sa for each-om), ali to mi ne deluje izvodljivo posto nemam neku metodu da mi vrati odredjenu tacku...

Tu vec ne mogu da ti pomognem. Sto se tice crtkanja u javi ovo sto sam ti dao je moj maksimum.
Ali, na ovom primeru sto sam ti poslao Kao sto mozes da primetis pomeranjem misa menja se samo X i Y koordinata tacke koja odredjuje zakrivljenje. Sto znaci da ako imas te tri tacke (pocetak, kraj i tacku zakrivljenja) ti tu krivu mozes da izracunas po nekoj formuli, jer se i ona na isti nacin generise u javi prilikom iscrtavanja. Proguglaj i/ili vidi sa nekim iz game development-a, ovo je vise u njihovoj sferi.

Howard1
20.1.2014, 15:29
Hocu da naucim malo da radim u programskom jeziku Java. Koju mi knjigu preporucujete na Srpskom i odakle poceti? Hvala unapred :).

Ivan452
20.1.2014, 20:20
Hocu da naucim malo da radim u programskom jeziku Java. Koju mi knjigu preporucujete na Srpskom i odakle poceti? Hvala unapred :).

Ako planiras da budes programer engleski jezik NE SME da ti predstavlja barijeru.
Sto se tice knjiga na srpskom moja preporuka je: http://www.cet.rs/index.php/cetknjige/core-java-se-7-tom-i-osnove-prevod-devetog-izdanja-detail.html (i drugi tom).

Howard1
23.1.2014, 17:58
Nije mi engleski problem, bar ne citanje i prevod ali vise volim da ucim na srpskom :). Sta mislite o knjizi java 6 za 21 dan za mene kao pocetnika ?

Ivan452
23.1.2014, 19:54
Nije mi Engleski problem, bar ne citanje i prevod ali vise volim da ucim na Srpskom :). Sta mislite o knjizi Java 6 za 21 dan za mene kao pocetnika ?

Prijateljski savet je da uzmes knjigu na engleskom, ako vec nije problem. Bolje da se navikavas na vreme.

Sto se knjige koju navodis tice. Vidim da ima preko 700 strana, tako da to za 21 dan odmah odbaci.
Nisam citao knjigu tako da ne mogu da kazem nista o njoj. Ali, vidim da je drugo poglavlje Swing a trece rad sa IO, serijalizacija i sl. Ja bih eventualno preporucio zamenu mesta tim poglavljima.
A i smatram da je 183 strane, koje zauzima prvo poglavlje, malo za pokrivanje svega onoga sto je tamo navedeno.
Ako uzmes tu, moja preporuka ti je da prodjes prvo poglavlje, a potom sam (putem interneta, tutorijala ili neke druge literature) jos proucis pojmove koji su tu objasnjeni.

Takodje, ako znas osnove bilo kojeg programskoj jezika preporucujem ti da se prijavis za ovo:
https://www.coursera.org/course/algs4partI

P.S
Imena jezika se pisu malim slovom.

Krilce
23.1.2014, 22:45
Odlicni tutoriali od samo Oracle-a. Vrlo su detaljni, i pokrivaju vise od vecine knjiga.

http://docs.oracle.com/javase/tutorial/

Ukoliko si pocetnik, odlicne knjige su Head First, u ovom slucaju Head First Java.
http://www.amazon.com/Head-First-Java-2nd-Edition/dp/0596009208

Poprilicno su slikovite, i objasnjeno je kao da se objasnjva detetu od pet godina, sto je velika prednost u odnosu na neke akademski napisane knjige, ako si pocetnik.

Ukoliko nisi pocetnik, a upoznat si sa objektno orijentisanim jezicima (posebno ukoliko su to c++ ili c#), onda ces se vrlo lako snaci.

Howard1
24.1.2014, 2:27
Izvinjavam se zbog pisanja imena jezika velikim slovom. C# sam radio oko pola godine a C ucim evo vec treci mesec tako da mi nije programiranje bas toliko nepoznato. Znam da se uci godinama ali polako, zelim da naucim da radim nesto prakticno na polju programiranja i ne zurim nigde :alealeee:. Hvala vam momci na smernicama :alealeee:

Howard1
5.2.2014, 14:53
Pitanje:

Zasto mi govori da promenim ime klase ako u knjizi lepo stoji public class a ne Weather.Java?

Evo problema koji imam na sledecem linku:

http://www.dodaj.rs/f/34/p9/4jZ9HbV7/problem-java.jpg

Resio sam problem trebalo je klasi dati drugo ime i sad raadiiii :)

http://www.dodaj.rs/f/1G/vB/3GWUNbM9/namesteno-radiiii.jpg

NIx Car
9.2.2014, 20:38
Idalje nisam naisao na resenje onog problema (da izvucem sve tacke iz neke krive), ali znam da je kriva radjena kao bezier curve i da mi za to treba De Casteljau-ov algoritam, al opet sam glup. :D
Svaka pomoc bi mi dobro dosla :)

MG-RAY
9.2.2014, 22:34
Za to što pokušavaš da uradiš ti ne trebaju sve tačke, da bi ti se taj objekat kretao po krivoj treba da primeniš funkciju interpolacije nad njom, npr:

Cubic (http://paulbourke.net/miscellaneous/interpolation/)

(pri vrhu strane imas funkciju koja radi interpolaciju sa kubnim krivama)

Kako kubne krive imaju dve pozicione i dve kontrolne tačke, ubaci ih u funkciju, a poziciju na krivoj ćeš dobiti u odnosu na parametar mu, u opsegu [0..1].

Samo primeni funkciju na svaki set koordinata (x i y) da bi dobio poziciju u 2D prostoru.

NIx Car
10.2.2014, 1:18
Znaci y0 i y1 mi je pocetna tacka, y2 i y3 mi je prva kontrolna tacka. Kada prodjem sa ciklusom u kom bi mi promenljiva mu bila sinus, (posto se sinus krece od 0 do 1), na taj nacin bih se kretao do te kontrolne tacke? A posto sam drugu kontrolnu tacku stavio da mi bude na istom mestu gde je i prva, odatle bih isto sve radio samo sto bih promenio stvarne parametre fukcjije?
Hvala ti jos jednom :)

MG-RAY
10.2.2014, 11:52
Ne bas, funkcija koju sam ti dao radi nad 1D vrednostima, tako da moras da je primenis nad svakim setom koordinata posebno, za x i y. U konkretnom slucaju ide (kontrolna tacka, start, end, kontrolna tacka).

Nisam video sinoc sta ti je konkretno trebalo, pa ona koju sam ti dao ne bi radila sa QubicCurve2D, sto sada vidim da koristis.

Napravio sam ti primer implementacije, nadam se da ce ti pomoci:

Primer (http://embed.plnkr.co/o7X8O6iDbPr7tb9D0s1D/preview)
(nije java, vise vizuelno, ali isti princip)

:)

prozor_xp
10.2.2014, 15:05
Zavrsavam sa razvojem jednog prostog programa u javi i hteo bih da ga snimim kao normalnu aplikaciju (da ga ne pokrecem preko eclipsa vec preko ikonice tog programa). Jel zna neko kako to da izvedem?

MG-RAY
10.2.2014, 19:31
Nisam koristio Eclipse vec dugo vremena, ali ako se dobro secam, islo je nesto tipa File > Export > (Runnable) Jar?

prozor_xp
10.2.2014, 20:11
TO JE TO!!!!!!!! hvala... Imam sad jos jedno pitanje kako da uklonim iz gornjeg levog ugla prozora java logo i da stavim sopstveni?

NIx Car
10.2.2014, 21:27
Probacu da iskoristim tvoj js kod tj da ga prevedem u Javu. :)
EDIT: Ovaj tvoj kod se odnosi samo na sinusnu funkciju ili mogu da ga koristim na bilo kojoj kubnoj krivoj?

MG-RAY
10.2.2014, 22:32
@NIx Car:
Kriva ovde lici na obrnutu sinusnu funkciju... ali samo lice, mozes da koristis na cemu god hoces... :)

Javi ako se ne snadjes sa prevodjenjem, nije previse komplikovano... par linija. :)


@prozor_xp:
http://docs.oracle.com/javase/1.5.0/docs/api/javax/swing/JFrame.html#setIconImage(java.awt.Image)

NIx Car
10.2.2014, 23:58
Nervira me to sto ne mogu sam da uradim zadatak. Od toga mi nema nista gore :(
Posto javascript, koliko vidim, pojma nemam, zamolio bih te i oko ovoga da mi pomognes, ako mozes...

NIx Car
11.2.2014, 0:12
I jel imas neki predlog cime da se menja ta interpolacija automatski, bez slajdera?

MG-RAY
11.2.2014, 2:21
Minimum working sample. :)

Za ostatak ces morati malo sam da se pomucis, inace nista neces nauciti. :D

Vrednost interpolacije u ovom slučaju je samo neka vrednost u opsegu [0..1] koju kada ubaciš u onu formulu gore, ti daje tačku na toj poziciji na krivoj, npr. 0.5 bi ti dalo tačku na polovini krive, itd...

Nekako mi se čini da ti nije baš najjasnije šta se ovde dešava i šta u stvari želiš da postigneš? :confused:

Samim tim, način na koji ćeš da kontrolišeš tu vrednost zavisi samo od toga šta ti je neophodno da uradiš? U primeru ovde tajmer samo šeta vrednost levo-desno radi demonstracije.

ivan90BG
11.2.2014, 13:53
Mislim da ti formula u kodu nije dobra. Ispustio si da digneš t na treći na prvom pojavljivanju, i na kvadrat na drugom.

MG-RAY
11.2.2014, 20:03
Mislim da ti formula u kodu nije dobra. Ispustio si da digneš t na treći na prvom pojavljivanju, i na kvadrat na drugom.

Formula je sasvim OK, u pitanju je pojednostavljena verzija ove (http://en.wikipedia.org/wiki/B%C3%A9zier_curve#Cubic_B.C3.A9zier_curves), a i kao sto je referencirano u JS primeru, nije ni moja, za detalje možeš pitati njega (http://answers.unity3d.com/users/6612/bunny83.html) ukoliko te interesuje... :)

ivan90BG
12.2.2014, 0:18
Moja greška, nisam primetio da je t dva puta izvađeno ispred zagrade. Nisam vido dodatne zagrade, pa mi se učinilo da su stepeni samo ispušteni. Naravno to sam primetio tek pošto sam iskucao podosta koda u matlabu da proverim da nisam lud, već sam počeo da se češem po glavi kako je moguće da njemu ta formula radi a kad je ja prekucam ne radi pre nego što sam uvideo šta je po sredi. :)

Inače ja sam pravio projekat za faks (upravo završio, sad pišem dokumentaciju) sa crtanjem vektorske grafike, između ostalog i kubne Bezijeove krive. Ja nisam kodirao formulu jer u Java2D api-ju cubic bezier jedna od primitiva (ima ih samo 3, to su linija, quad bezier i cubic bezier). Nisam koristio ni jednu javinu klasu poput CubicCurve2D već sam svaki objekat pisao od nule (jer sam patološki optimizator :D). Ali formula će mi verovatno trebati ako budem dodavao programu mogućnost kao u onom javaskriptu.

Sada mi je problem hit test, odnosno selektovanje krive mišem. Jedan način je naći udaljenost tačke klika od krive, odnosno tačku na krivoj najbližu tački klika, ali za to mora da se reši polinomska jednačina 5. stepena u opštim brojevima, u šta ne bih da se upuštam. Drugi način koji mi je maločas pao na pamet je da dva puta rešim funciju krive kao jednačinu sa ubačenim vrednostima x i y iz tačke klika, za šta ima već gotova formula (jer je 3. stepena), da bih dobio dve vrednosti t. Ako je tačka jako blizu linije, valjda bi ove dve vrednosti trebalo da budu jako bliske, a što je tačka dalje od krive to različitije. Samo me brine preciznost, mislim da ako tu razliku između dve dobijene vrednosti t postavim na neku fiksnu vrednost, širina prihvatljive zone oko linije će verovatno da varira u zavisnosti od oblika krive.

MG-RAY
13.2.2014, 18:03
I meni je trebalo vremena da skapiram o čemu se radi zapravo... :paranoia:

Well, anyway, I ja treba da se sada upustim u rvanje sa krivama na sličan način, biće glavobolje... :)

prozor_xp
15.2.2014, 22:11
Kako bi trebao da izgleda java kod koji ocitava kapacitet hard diska, ram memorije i cpu clock tako da mogu te vrednosti da pozovem i da ispisem na ekranu?

PeTkO
15.2.2014, 22:51
Koristi Runtime klasu i getRuntime metodu te klase. Imas dokumentaciju na netu, ali sve sto ti je potrebno mozes da dobijes iz te klase.

prozor_xp
16.2.2014, 0:42
double a = Runtime.getRuntime().maxMemory();
System.out.println(a);

i dobijem output ovo: 9.28514048E8;
Sta bi to trebalo da znaci?

i u klasi runtime ne postoji metoda za citanje takta procesora (ili ja ne umem da je pozovem).


Hvala u svakom slucaju, ali ako mozes pojasni mi ovo posto se do sada nisam susretao sa klasom Runtime.

Ivan452
16.2.2014, 0:47
Runtime ce vratiti samo ono sto je dostupno JVM-u.
Tako da te vrednosti mogu, a ne moraju, biti tacne.

user1031
17.2.2014, 18:17
da li je knjiga java programiranje 1 i 2 (http://download.tutoriali.org/Tutorials/JAVA/Java_Programiranje_1_i_2.pdf) dobra za pocetak ucenja o javi? skoro sam krenuo da ucim pa znam neke osnove.

Krilce
17.2.2014, 23:41
da li je knjiga java programiranje 1 i 2 (http://download.tutoriali.org/Tutorials/JAVA/Java_Programiranje_1_i_2.pdf) dobra za pocetak ucenja o javi? skoro sam krenuo da ucim pa znam neke osnove.

Imas nekoliko postova nazad preporucene knjige/tutorijale.

Howard1
19.2.2014, 1:56
da li je knjiga java programiranje 1 i 2 (http://download.tutoriali.org/Tutorials/JAVA/Java_Programiranje_1_i_2.pdf) dobra za pocetak ucenja o javi? skoro sam krenuo da ucim pa znam neke osnove.

Ova knjiga ti je kad vec imas dosta znanja cisto za vezbanje i usavrsavanje Jave. Ako si pocetnik, toplo preporucujem knjigu Java 6 za 21 dan jer je tako detaljno objasnjena da je iz nje najbolje uciti ako si pocetnik. Knjiga ima 700 strana, ja sam je kupio i odusevio se kako je dobro uradjena:aplauz:

prozor_xp
19.2.2014, 13:34
imam 2 java klase i u jednoj klasi imam jednu boolean vrednost koja je podesena na true i kada tu vrednost pozovem iz prve klase program izbaci vrednost true a kada ga pozovem izbaci vrednost false.


P.S: U stvari ovako vrednost je po defaultu = true medjutim u kodu imam JCheckBox koji je po defaultu stikliran, i kada ga kliknem da ne bude vise stikliran on treba da podesi onu boolean vrednost da bude false. Kada pozovem tu vrednost u prvoj klasi metodom System.out.println() on lepo izbaci vrednost true ako je JCheckBox stikliran, false ako nije, medjutim kada to isto uradim u drugoj klasi uvek mi se ispisuje vrednost false :confused: kako to da popravim?

P.P.S: Sve varijable su deklarisane sa public tako da to ne bi trebalo da predstavlja problem.

prozor_xp
19.2.2014, 13:43
provalo sam jos nesto:


public class nekiprogram extends JFrame{

public boolean cc; druga klasa cita samo vrednosti koje sam inicijalizovao ovde.
public boolean cc2 = true;
public boolean cc3 = false;

public nekiprogram(){

Ako ovde promenim prednost na primer:
cc2 = false;
druga klasa ce idalje citati cc2 kao true.

}
}
Kako da podesim da mi druga klasa cita vrednosti koje su dole namestene?

NIx Car
19.2.2014, 19:24
Napravis konstruktor druge klase sa parametrom da prima vrednost tog boolean-a i to bi trebalo da je to :)

prozor_xp
19.2.2014, 20:01
Napravis konstruktor druge klase sa parametrom da prima vrednost tog boolean-a i to bi trebalo da je to :)

Jel mozes da mi napises kod kako se to radi?

i imam jos 2 pitanja :)
1. kako da umesto ove default java ikonice stavim neku drugu http://postimg.org/image/xvryx8py1/

2. Hocu da ovaj program koji pravim ima u donjem uglu dugme donate na koje kada neko klikne treba mu otvori stranicu preko koje on moze da prepaci neki dinar na moj paypal account :) jel to izvodljivo?

NIx Car
20.2.2014, 0:23
Ili ja nisam poslao kod koji sam ti spremio ili su mi moderatori obrisali poruku :D

Primer iz programa na kom upravo radim za skolu:


if(e.getSource() == dugme1)
{
datoteka = textF1.getText();
interval = textF2.getText();
brojPolinoma = textF3.getText();
new SecondWindow(datoteka, interval, brojPolinoma);
}

kada korisnik klikne na dugme1, napravice se novi objekat klase SecondWindow
A ovako izgleda njen konstruktor:

SecondWindow(String datoteka, String interval, String odstupanje)
{
this.datoteka = datoteka;
this.interval = Integer.parseInt(interval);
this.odstupanje = Double.parseDouble(odstupanje);
}

NIx Car
21.2.2014, 1:22
Koliko cesto praktikujete modularno progarmiranje u Javi?
Ja za ovih 6 meseci koliko se druzim sa javom, sam samo u jednom slucaju morao da pravim dve razlicite klase. Moj profesor na primer radi modularno, ali mi njegova modularnost nekako nije prakticna :D
U C i C++ bukvalno svaki program radim modularno...
Ukoliko i javi radite po modulima, mozete li mi dati neke smernice kako da se nakanem da i tu pravim module? :D Hvala

PeTkO
21.2.2014, 3:45
Modularno u smislu da kasnije mozes da dodajes odredjene funkcije programa, tj. da kod to dozvoljava, ili modularnost u nekom drugom smislu?

prozor_xp
21.2.2014, 16:34
Imam jos jedno pitanje:

button.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){

Sta ovde da napisem da bi korisniku klikom na dugme program automatski otvorio web browser i uputio ga na neku stranicu?
}}
);

PeTkO
21.2.2014, 22:06
Probaj nesto odavde...

http://stackoverflow.com/questions/5226212/how-to-open-the-default-webbrowser-using-java

NIx Car
22.2.2014, 2:17
Modularno u smislu da kasnije mozes da dodajes odredjene funkcije programa, tj. da kod to dozvoljava, ili modularnost u nekom drugom smislu?

Umm... Ovako nesto sam mislio:

Da li ima potrebe za neki ovako jednostavan program pisem tri odvojene klasse, kao sto je moj profesor uradio, kada bih sve to mogao da uradim u jednoj (i toj jednoj bi mi bilo lepse i preglednije da vidim sta se dogadja, posto radim samo sa jednim prozorom)

import java.awt.*;

import javax.swing.*;

public class ComponentTest {

public static void main(String[] args) {

ComponentFrame frame = new ComponentFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);

frame.setVisible(true);

}

}

class ComponentFrame extends JFrame

{

public ComponentFrame(){

//tekst Prikaz teksta.

super("Prikaz teksta"); //Poziva se konstruktor nadklase JFrame i u naslovu prikazuje

Container con = getContentPane(); //Dolazimo do panela sadrzaja prozora.

con.add(new DrawComponent()); //Formiramo objekat i dodajemo ga u panel.

pack(); //Velicina prozora prilagodice se velicini Stringa na njemu

}

}

class DrawComponent extends JComponent

{

public static final int MESSAGE_X = 50;

public static final int MESSAGE_Y = 50;

public static final int DEFAULT_WIDTH = 200;

public static final int DEFAULT_HEIGHT = 100;

//Redefinisanje metode paintComponent.

public void paintComponent(Graphics g){

}

//Redefinisanje metode getPreferredSize

public Dimension getPreferredSize(){

}

}

//Prikaz stringa na odredjenim koordinatama panela.

g.drawString("Program u Javi", MESSAGE_X, MESSAGE_Y);

//Metoda vraca novu dimenziju komponente

return new Dimension(DEFAULT_WIDTH,DEFAULT_HEIGHT);

ivan90BG
22.2.2014, 11:39
Ako je svrha programa da ispiše tekst u prozoru na najprimitivniji način (pozivima metoda za crtanje) onda svakako moraš da imaš klasu koja nasleđuje JComponent i redefiniše paintComponent(). Naravno ti sad možeš u ovoj klasi da staviš main metodu i u nju staviš kod za pravljenje prozora, ali to ne izgleda lepo, a nije ni dobra navika. Kod za pravljenje interfejsa prozora najbolje je da stoji u klasi tog prozora. A nekako mi je prirodno da main metoda bude u svojoj klasi, jer zašto bi neka skroz samostalna klasa koja može da se koristi u više različitih programa (kao što je taj prozor ili komponenta) imala main metodu.

prozor_xp
23.2.2014, 12:22
Kako da namestim da mi se program automatski pali zajedno sa operativnim sistemom i kada ga minimiziram da se ikonica pojavi u systray?

ivan90BG
23.2.2014, 20:37
Za auto start up: http://stackoverflow.com/questions/1025807/code-for-auto-starting-a-java-application-on-windows-startup
Ukratko moraš da napišeš .bat fajl koji će startovati program i staviti ga u AutoRun folder.

Za minimize u system tray: http://stackoverflow.com/questions/7461477/how-to-hide-a-jframe-in-system-tray-of-taskbar
Ukratko postoje klase u Javi koje ovo omogućavaju, pročitaj odgovor pa dokumentaciju.

prozor_xp
16.3.2014, 0:46
Imam zadatak napraviti atribute ime, prezime..... i odgovarajuce get i set metode za te atribute. Kakve su te metode? sta se pod tim podrazumeva?

Andross
16.3.2014, 0:51
Dve i po sekunde guglanja zaboga, slusas li ti sta na tom faksu? http://stackoverflow.com/questions/6638964/set-and-get-methods-in-java

prozor_xp
16.3.2014, 19:34
String ime;

public void setIme(String ime){

this.ime = ime;
}

Jel moze neko da mi objasni sta ovaj podvuceni deo koda radi?

NIx Car
16.3.2014, 20:16
Menja vrednost polja objekta koji poziva datu metodu.

Na primer imas klasu Osoba i zelis da objektu tipa klase osoba dodelis ime Pera. A osoba u sebi vec ima polje Ime i metodu setIme kao sto si ti napisao

Osoba osoba;
osoba.setIme("Pera");

Krilce
16.3.2014, 20:21
this predstavlja pokazivac na objekat sa kojim se trenutno radi. Znaci, ako imas klasu Autobus, i napises this.marka, to se odnosi na marku bas tog autobusa sa kojim se radi. U ovom slucaju, this.ime se koristi zato sto se i atribut te klase i parametar metode setIme(...) nazivaju "ime".

Posto parametar unutar funkcije ima prednost u odnosu na atribut klase, kada bi napisao samo ime = ime, to bi znacilo da parametar funkcije prima sopstvenu vrednost, sto apsolutno nicemu ne bi sluzilo.

Kako zelis da pristupis atributu klase sa nazivom "ime", moras da pokupis referencu na objekat sa kojim se radi, a onda pristupnim operatorom (".") pristupis atributu te klase.

Sada, kada si pristupio samom atributu klase pomocu this.ime, samo mu dodelis vrednost koju nosi parametar metode.

http://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html

Jedan savet. Pre nego sto postavis pitanja ovde, probaj malo da izguglas, ili iscitaj knjige/tutorijale koji su preporuceni.

prozor_xp
21.3.2014, 21:15
Cuo sam da mogu da se prave aplikacije za facebook uz pomoc jave. Pokusao sam da nadjem nesto vise o tome na google ali nisam nasao nista konkretno. Zna li neko nesto o ovome? i ako imate neki dobar link sa tutorialom okacite ovde.

PeTkO
22.3.2014, 2:44
Izvoli:
http://ocpsoft.org/opensource/creating-a-facebook-app-setup-and-tool-installation/


Savet: malo googla nije na odmet!!!

Krilce
22.3.2014, 16:34
Bolje se pozabavi osnovama, nego sto odmah skaces na stvari koje bez tih osnova neces razumeti. :)

prozor_xp
26.3.2014, 20:14
Moram jos nesto da pitam, pretrazio sam google ali sta god da sam pokusao nije upalilo. Kako da dodam nove vrednosti u excel tabelu preko jave?

JButton excel = new JButton("Excel");
excel.setLocation(230, 250);
excel.setSize(100, 30);
p.add(excel);

excel.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
try{
String fileName = "D:\\file.xls";
WritableWorkbook workbook = null;
try {
workbook = Workbook.createWorkbook(new File("D:\\file.xls"));
} catch (IOException e1) {

e1.printStackTrace();
}
WritableSheet sheet = workbook.createSheet("Sheet1", 0);

Label label = new Label(0,0,"Ocena");
sheet.addCell(label);

Label label1 = new Label(1,0, ocena.getText());
sheet.addCell(label1);

try {
workbook.write();
workbook.close();
} catch (IOException e1) {

e1.printStackTrace();
}



}catch(WriteException eee){}
}
}
);


ovaj kod pravi novi excel file, a ja hocu da sledeci put kada pritisnem dugme da proveri da li fajl vec postoji i ako postoji da dopise nove vrednosti ("ali da ne obrise stare").
Dalke, nove vrednosti samo da doda u novi red, ako ima popunjeno 5 redova vode vrednosti da doda u 6 itd.....

Krilce
26.3.2014, 22:17
"Java read/write excel file". :)

Neki od ponudjenih linkova:
http://www.javaworld.com/article/2074940/java-app-dev/reading-and-writing-excel-spreadsheets.html
http://www.vogella.com/tutorials/JavaExcel/article.html

Prva stvar kod programiranja: nauci da koristis google. :D

prozor_xp
26.3.2014, 23:05
"Java read/write excel file". :)

Neki od ponudjenih linkova:
http://www.javaworld.com/article/2074940/java-app-dev/reading-and-writing-excel-spreadsheets.html
http://www.vogella.com/tutorials/JavaExcel/article.html

Prva stvar kod programiranja: nauci da koristis google. :D

googlao sam ali nema nista na ovu temu, na ovim linkovima nema ono sto meni treba. :)

Krilce
27.3.2014, 0:14
Pa, proveravanje da li fajl postoji je lako.


File file = new File(path);
if(file.exists() && !file.isDictionary()) {
...
}


Do sad nisam radio sa excel fajlovima u javi, tako da tu ne mogu toliko da ti pomognem.

http://jexcelapi.sourceforge.net/resources/javadocs/2_6_10/docs/jxl/Workbook.html

http://jexcelapi.sourceforge.net/resources/javadocs/2_6_10/docs/jxl/write/WritableWorkbook.html

http://jexcelapi.sourceforge.net/resources/javadocs/2_6_10/docs/jxl/write/WritableSheet.html

Iscitaj ove api-je i vidi koje metode mogu da ti pomognu. Mozda bi mogao da odradis nesto ovako(pseudokod, tako nesto):


File file = new File(path);
if(file.exists() && !file.isDictionary()) {
WritableWorkbook workbook = Workbook.getWorkbook(file);
WritableSheet sheet = workbook.getSheet("Sheet1");
Label label1 = new Label(1,0, ocena.getText());
sheet.addCell(label1);
workbook.write();
workbook.close();
...
}

prozor_xp
27.3.2014, 0:35
Recimo da excel file vec postoji i u njemu su uvek koriste samo prve 4 celije u redu, na primer:

ime | prezime | datum rodjenja | bla

Pera| Peric | 11.11.1955 | bla

........

I ti kada u program upises neko ime i prezime on treba da automatski upise te podatke u sledeci prazan red, ali i da sacuva postojece podatke, dakle samo da dopise nove. Samo me zanima kako da namestim da program prepozna koji je red prazan a za ostalo cu se snaci.

prozor_xp
28.3.2014, 21:44
precesljao sam malo internet i nasao sam ovo: http://stackoverflow.com/questions/11338383/writing-to-an-existing-excel-file


Workbook existingWorkbook = Workbook.getWorkbook(new File(fileToEdit.getAbsolutePath()));
WritableWorkbook workbookCopy = Workbook.createWorkbook(new File("output.xls"), existingWorkbook);
WritableSheet sheetToEdit = workbookCopy.getSheet(sheetName);
WritableCell cell;
Label l = new Label(currentColumn, currentRow, value);
cell = (WritableCell) l;
sheetToEdit.addCell(cell);
workbookCopy.write();
workbookCopy.close();
existingWorkbook.close();




Ali mi ovaj kod izbacuje null pointer exception, takodje sam utvrdio da taj problem pravi ova linija: sheetToEdit.addCell(cell); Jel moze neko da mi pomogne da resim ovaj problem zezam se vec 5 dana sa ovim i nikako da zavrsim program?

Krilce
29.3.2014, 0:26
Pa ispitaj koji ot tih objekata je null. Ako ne znas da koristis debugger, samo odradi print na konzoli za svaki objekat posle njegovog kreiranja. Kada budes saznao koji je objekat null, saznaj koji je uzrok toga. Npr. moguce je da je sheetToEdit null, jer ne postoji WritableSheet sa imenom sheetName.

prozor_xp
30.3.2014, 20:59
Snasao sam se na kraju u vezi ovoga. :)

Jel moze java servlet da se okaci na facebook? da bude kao facebook aplikacija?

prozor_xp
6.4.2014, 18:50
Kako da namestim da mi program sacuva sva podesavanja kada ga zatvorim? Dakle kada ga sledeci put otvorim da on automatski ucita ona podesavanja koja sam namestio prilikom prethodnog otvaranja.

ivan90BG
11.4.2014, 12:05
Java ima u biblioteci podršku za snimanje i čitanje Properties fajlova (http://en.wikipedia.org/wiki/.properties), to ti je jednostavan format koji se sastoji od tekstualnih ključeva i vrednosti u koji možeš da pamtiš šta oćeš (pod uslovom da nije niz ili neka razgranata strutura podataka, mada i za to ima leka, možeš da odvajaš tačkama u ključevima nivoe ugnježdenja i dodaješ brojeve na ključeve kod nizova)


bla1Bla=neki tekst sa ramacima
truc2=345.54
kljuc.sa.tackama=i tako dalje

Imaš klasu Properties (http://docs.oracle.com/javase/7/docs/api/java/util/Properties.html) u taj objekat ubaciš kao u hashmap-u ključeve i vrednosti (ali samo kao stringove) i samo pozoveš metodu da ti sačuva u fajl, koji možeš isto tako da učitaš i izvlačiš vrednosti za ključeve. Preporučujem ti da napraviš neku klasu sa statičkim metodama i poljima ili singleton klasu koja će da drži te property-e za ceo program, i kojima će moći da se pristupa iz raznih klasa koje snimaju i čitaju podešavanja.

NIx Car
12.4.2014, 10:17
Posto mi prozor u nekim situacijama ima visinu koja odgovara rezoluciji mog monitora, desava mi se cesto da komponente koje se nalaze dole, jednostavno budu nedostupne zbog taskbara. Kako taj problem da resim?

Krilce
12.4.2014, 13:37
Mozes da postavis sliku?

ivan90BG
12.4.2014, 14:29
U ovom SO pitanju leži odgovor: http://stackoverflow.com/questions/6844996/windows-taskbar-height-width

c/p:

Dimension scrnSize = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle winSize = GraphicsEnvironment.getLocalGraphicsEnvironment(). getMaximumWindowBounds();

int taskBarHeight = scrnSize.height - winSize.height;


getMaximumWindowBounds() daje maksimalne granice prozora u koordinatnom sistemu desktopa (ako se postavi na to, neće otići ispod taskbara).

prozor_xp
30.4.2014, 12:36
Imam jedan problem... Kada iz eclipsa pokrenem program koji sam napravio on radi normalno ali kada ga exportujem u jar fajl on nece da se pokrene, pokrene se samo splash screen i tu zabode a u eclipsu sve radi normalno. Zna li neko do cega je problem?


P.S: Druge programe kada exportujem u runnable jar rade normalno :mad:

PP.S: kada pokusam da obrisem taj jar fajl izbaci mi poruku kao ne moze da se obrise zato sto program radi, i u task manageru stoji da radi ali da zauzima 0 rama.
Napominjem jos jednom da taj isti program kada se pokrene iz eclipsa radi potpuno normalno, i JFrame i ostalo je podeseno setVisible(true);

Ivan452
1.5.2014, 1:51
Da li si koristio neke eksterne resurse?
Ako jesi, obrati paznju na to kako si ih ubacio u projekat i gde se nalaze. Jer ako program ne moze da nadje neki od resursa on se zabode i naravno ostane kao proces dok ga ne ubijes iz task manager-a.

zeuk
4.7.2014, 23:19
Pozdrav!

Znam da ovakvih tema ima na kilo, na ovom, a i na drugim forumima - domacim i stranim. Ipak, lakse mi je kada napisem i svoju pricu. Situacija je sledeca. Imam 26 godina, zavrsio sam Ekonomski fakultet prosle godine, prilicno dobar prosek, ne bas u roku zbog raznih preduzetnickih podviga u medjuvremenu. Posao se nalazi uzasno tesko, finansijski sektor je u blagom opadanju kod nas, i mnogo je tesko uci u sistem. Sa druge strane, dosta mojih prijatelja pravi prilicno dobru karijeru u programiranju. Ja o programiranju ne znam previse, ali znam da nisam glup za to. Nisam genije, ali mi je logika prilicno jasna.

Sto se tice iskustva, nemam ga u upotrebljivoj meri. Kao klinac, sa 5-6 godina sam ucio osnove Basica, jer sam od ujaka dobio komodore 64 i knjigu o Basic-u, pa sam nasao za shodno da krivim kicmu danima ispred televizora u pokusaju da napravim neki programcic koji ce da resava linearnu jednacinu. Posle sam krenuo u skolu, pa su mi uz drustvo igrice postale zanimljivije od programiranja.

Sledeci dodir sa programiranjem sam imao u Gimnaziji, pa sam prilicno ovladao osnovama Paskala i Visual Basica. Bio sam medju boljima sto se tog predmeta tice, ali na zalost, nisam bio sire zainteresovan. Bio sam previse zauzet usavrsavanjem cs 1.6, wc3 i slicnih nevaznih, a prilicno interesantnih zanimacija.

Pricao sam sa drugarima programerima, i neki su mi preporucili da krenem sa C#, neki Javu. Moj utisak je da mi je iz komercijalnog ugla java opipljivija. Nisam siguran, ali do tog zakljucka sam dosao na osnovu informacija kojima raspolazem. Tako da - neka bude Java.

Znaci, sustina je sledeca.

Znam da nisam previse mator da krenem da se bavim ovim i promenim profesiju.
Prilicno sam kompjuterski pismen.
Imam solidno znanje iz matematike.
Engleski znam odlicno.
Imam mogucnosti da se programiranju posvetim nekoliko sati dnevno, za koji mesec i vise.

U svemu sto radim, opterecen sam efikasnoscu. Zbog toga, moje pitanje je :

Koji je najbolji i najefikasniji pristup ucenju Jave?

Online free kursevi?
Online placeni kursevi?
Neki kursevi uzivo?

Znam da ima puno skola programiranja, ali nisam siguran koliko oni vise nude od nekog free kursa? Daleko od toga da sam bogat, ali mogu da priustim gotovo bilo koji kurs koji se nudi kod nas. Mozda bih mogao cak i IT akademiju, ali sam prilicno nepoverljiv prema njima. Znam da sertifikat nicemu ne sluzi i to me ne obeshrabruje, ali opet, nekako imaju previse agresivan marketing za moj ukus, i to me prilicno odbija.

Znaci, cela poenta je da dodjem do relevantnog znanja, da uradim neke male i ne bas toliko bizarne projekte, i onda cu moci da upadnem negde da radim praksu i udjem u celu pricu. Ne zuri mi se da sto pre krenem da zaradjujem pare, ali zelim da sto pre ili efikasnije pridjem ucenju.


Da ponovim, najefiksniji pristup ucenju Jave? (ili programiranju uopste)

Hvala :)

brano88
4.7.2014, 23:52
Nabavi sebi neku knjigu za pocetak i pocni vjezbati. Mani se video tutorijala i slicnih gluposti. Ukljuci se i na stackoverflow QA website. Dodje kao dobra vjezba. Plus, saznao sam za dosta inovacija u svijetu programiranja preko tog sajta.

Mozda bih mogao cak i IT akademiju, ali sam prilicno nepoverljiv prema njima.

Drug mi je pricao da je jedan njegov drug isao na neki kurs C#. Ne sjeca se najbolje, ali misli da je upravo IT akademija. Mrka kapa.

Znaci, cela poenta je da dodjem do relevantnog znanja, da uradim neke male i ne bas toliko bizarne projekte, i onda cu moci da upadnem negde da radim praksu i udjem u celu pricu.

3.5 godine programiram amaterski u Javi, i jos nisam nasao posao u toj struci a takodje sam student ekonomskog fakulteta (smijer je doduse informaticki). Ti bi trebao da imas vise srece jer je potrazanja za Java programerima u Srbiji neuporedivo veca u odnosu na BiH.
Pozdrav.

Teva
6.7.2014, 1:39
Knjiga tipa ove
http://www.amazon.com/Ivor-Hortons-Beginning-Java-Horton/dp/0470404140

zeuk
7.7.2014, 23:58
Hvala vam na savetima. Nastavicu da radim onda kao sto radim - sam. Samo treba da dodjem do nekog smislenog nivoa da imam sta da pokazem. A sto se tice prakse ili tako nesto, imam dosta poznanstava sa ljudima koji imaju programerske firme, i sigurno bih mogao negde da upadnem da ucim zanat...Imacu zanimljivih narednih par meseci. :)

prozor_xp
5.8.2014, 21:48
Jel moze neko da mi objasni koja je razlika izmedju, na primer:

JComponent p = new JPanel(); i JPanel p = new JPanel();

ili na primer:

JList<Integer> lista = new ArrayList<>(); i ArrayList<Integer> lista = new ArrayList<>();

Odnosno kada prvo napises naziv nadklase i zatim napises = new naziv podklase,
i kada odmah napises: ta i ta klasa = new ta i ta klasa();???

brano88
6.8.2014, 0:33
List<Integer> lista = new ArrayList<>(); i ArrayList<Integer> lista = new ArrayList<>();

To znaci da mozes da pozoves metode koji su definisani samo u List interfejsu.

mojdezanin
1.11.2014, 10:04
Pozdrav, skinuo sam IntelliJ , pa ne mogu da pronadjem , ako postoji opcija pokretanja koda u konzoli kao u Eclipsi , malo sam po netu trazio i predlog je bio neki plugin ali ga nisam uspio naci .

MG-RAY
1.11.2014, 12:51
Imaš Run u gornjem desnom uglu. Ako ti ne odgovara šta radi po defaultu možeš odmah tu pored da promeniš konfiguraciju.

I like games
26.11.2014, 16:18
Planiram da počnem da učim Javu. Nabavio sam knjigu koja obrađuje JDK 7, a izažao je JDK 8. Da li je u redu da učim iz literature za prethodnu verziju?

brano88
26.11.2014, 16:35
Planiram da počnem da učim Javu. Nabavio sam knjigu koja obrađuje JDK 7, a izažao je JDK 8. Da li je u redu da učim iz literature za prethodnu verziju?

Jeste! Nema tu puno toga novog da bi morao da nabavljas posebnu knjigu koja obradjuje Javu 8.

I like games
26.11.2014, 16:46
Hvala @brano88 na brzom odgovoru. :)
Još samo da proverim, aplikacije koje rade u Javi 7 radiće i u Javi 8 ?

brano88
26.11.2014, 17:41
Da naravno. Ali pazi samo na ovo, Java 7 kompajler ili kompajler jos neke nize verzije ce ti izbaciti gresku ako pokusas da kompajliras kod sa Java 8 sintaksom (npr. lambda sintaksa). Java 8 kompajler ce normalno da kompajlira kod bez obzira za koju je verziju napisan.

I like games
26.11.2014, 18:09
To mi je bilo važno da znam, hvala.

mojdezanin
17.12.2014, 19:28
Pozdrav, kada pokrenem izbacuje mi gresku da
Error:(39, 8) java: class Jacobi is public, should be declared in a file named Jacobi.java
. Citao sam za ovo ucitavanja fajlova i napravio u .txt matricu i stavio je u src, ali to nije rijesilo .

package com.company;/*
* Copyright (C) 2012 Rafael Rendón Pablo <smart.rendon@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* * This class provides a simple implementation of the Jacobi method for solving
* systems of linear equations. */
/*
How to use:
The program reads an augmented matrix from standard input,
for example:
3
5 -2 3 -1
-3 9 1 2
2 -1 -7 3
The number in the first line is the number of equations
and number of variables. You can put this values in a file
and then execute the program as follows:
$ java Jacobi < equations.txt
If the matrix isn't diagonally dominant the program tries
to convert it(if possible) by rearranging the rows.
*/
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;


public class Jacobi{
public static final int MAX_ITERATIONS = 100;
private double[][] M;
public Jacobi(double [][] matrix) { M = matrix; }
public void print()
{
int n = M.length;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n + 1; j++)
System.out.print(M[i][j] + " ");
System.out.println();
}
}
public boolean transformToDominant(int r, boolean[] V, int[] R)
{
int n = M.length;
if (r == M.length) {
double[][] T = new double[n][n+1];
for (int i = 0; i < R.length; i++) {
for (int j = 0; j < n + 1; j++)
T[i][j] = M[R[i]][j];
}
M = T;
return true;
}
for (int i = 0; i < n; i++) {
if (V[i]) continue;
double sum = 0;
for (int j = 0; j < n; j++)
sum += Math.abs(M[i][j]);
if (2 * Math.abs(M[i][r]) > sum) { // diagonally dominant?
V[i] = true;
R[r] = i;
if (transformToDominant(r + 1, V, R))
return true;
V[i] = false;
}
}
return false;
}
/**
* Returns true if is possible to transform M(data member) to a diagonally
* dominant matrix, false otherwise.
*/
public boolean makeDominant()
{
boolean[] visited = new boolean[M.length];
int[] rows = new int[M.length];
Arrays.fill(visited, false);
return transformToDominant(0, visited, rows);
}
/**
* Applies Jacobi method to find the solution of the system
* of linear equations represented in matrix M.
* M is a matrix with the following form:
* a_11 * x_1 + a_12 * x_2 + ... + a_1n * x_n = b_1
* a_21 * x_1 + a_22 * x_2 + ... + a_2n * x_n = b_2
* . . . .
* . . . .
* . . . .
* a_n1 * x_n + a_n2 * x_2 + ... + a_nn * x_n = b_n
*/
public void solve()
{
int iterations = 0;
int n = M.length;
double epsilon = 1e-15;
double[] X = new double[n]; // Approximations
double[] P = new double[n]; // Prev
Arrays.fill(X, 0);
Arrays.fill(P, 0);
while (true) {
for (int i = 0; i < n; i++) {
double sum = M[i][n]; // b_n
for (int j = 0; j < n; j++)
if (j != i)
sum -= M[i][j] * P[j];
// Update x_i but it's no used in the next row calculation
// but up to de next iteration of the method
X[i] = 1/M[i][i] * sum;
}
System.out.print("X_" + iterations + " = {");
for (int i = 0; i < n; i++)
System.out.print(X[i] + " ");
System.out.println("}");
iterations++;
if (iterations == 1) continue;
boolean stop = true;
for (int i = 0; i < n && stop; i++)
if (Math.abs(X[i] - P[i]) > epsilon)
stop = false;
if (stop || iterations == MAX_ITERATIONS) break;
P = (double[])X.clone();
}
}
public static void main(String[] args) throws IOException
{

int n;
double[][] M;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
PrintWriter writer = new PrintWriter(System.out, true);
n = Integer.parseInt(reader.readLine());
M = new double[n][n+1];
for (int i = 0; i < n; i++) {
StringTokenizer strtk = new StringTokenizer(reader.readLine());
while (strtk.hasMoreTokens())
for (int j = 0; j < n + 1 && strtk.hasMoreTokens(); j++)
M[i][j] = Integer.parseInt(strtk.nextToken());
}
Jacobi jacobi = new Jacobi(M);
if (!jacobi.makeDominant()) {
writer.println("The system isn't diagonally dominant: " +
"The method cannot guarantee convergence.");
}
writer.println();
jacobi.print();
jacobi.solve();
}
}

brano88
17.12.2014, 20:51
Ukloni ovaj dio koda ukoliko je "java" datoteka sa izvornim kodom u "src" folderu:
package com.company;

Dalje, sam komplajler ti govori gdje je greska. Dakle, Java izvorni kod se iskljucivo cuva u "java" datotekama. Ukoliko je ime "public" klase Jacobi onda sav kod mora biti sacuvan u Jacobi.java datoteki.

Dzungla
17.12.2014, 20:53
Pozdrav, kada pokrenem izbacuje mi gresku da
Error: (39, 8) java: class Jacobi is public, should be declared in a file named

39 public c (8)lass Jacobi

Ako neće da ti radi sa "Run file", verovatno ime napravljene klase nije isto kao i ime klase koja sadrži ovaj kod. /(Jacobi u ovom slučaju).


4
5
3
4
5
The system isn't diagonally dominant: The method cannot guarantee convergence.

5.0 0.0 0.0 0.0 0.0
3.0 0.0 0.0 0.0 0.0
4.0 0.0 0.0 0.0 0.0
5.0 0.0 0.0 0.0 0.0
X_0 = {0.0 NaN NaN NaN }
X_1 = {0.0 NaN NaN NaN }
BUILD SUCCESSFUL (total time: 14 seconds)



Nije do koda ;)

mojdezanin
17.12.2014, 23:47
Hvala puno svima , uspio sam . :alealeee:

GROBAR22
21.12.2014, 22:51
Pozdrav treba mi pomoc oko jednog zadatka u javi , ovako glasi zadatak:

http://www.dodaj.rs/f/2z/a5/2qLzAwuu/190791941044482908068239.jpg

e sad ja sam zamislio to ovako da uradim, ali ne ide pa ako neko moze da mi pomogne bio bih zahvalan.:

http://i.gyazo.com/d4a0a000dc5e8833e5824902434a798e.png

Dzungla
22.12.2014, 3:22
e sad ja sam zamislio to ovako da uradim ...



Pa dobro si ti to zamislio :D

Ne šalim se, skener je ok, ali poređenje stringova po referenci nije baš .. :)
Ima nagoveštaja na slici (sa kodom) zašto ti ne ide ...

za do/while

while(!tekst.equals("kraj"));

za while(true)

if(tekst.equals("kraj")) break;

voodoo_
23.12.2014, 10:25
Kad pređeš na C#, moći ćeš da porediš stringove sa "=" :p

brano88
23.12.2014, 14:42
Kad pređeš na C#, moći ćeš da porediš stringove sa "="

Ih! Ako je to razlog da prijedje na C#... onda stvarno...

Uostalom, za pocetnika u OOP programiranju izbor izmedju Jave i C#-a je irelevantan. Npr. sta im vrijede generici kad ne znaju da ih maksimalno iskoriste, sta im vrijedi LINQ ili Streams kada koriste klasicnu "for" petlju za filtriranje kolekcija itd itd. :kreza:

Howard1
20.1.2015, 11:53
Treba mi pomoc oko jednog zadatka posto sam krenuo na programiranje Java programskog jezika i sada imam zadatak koji ne mogu sam da resim pa bih hteo nekoga da zamolim ako moze da mi pomogne :).

Zadatak glasi:

Sa tastature se unosi celobrojni tip podatka. Potrebno je u izlazu prikazati dati broj kao zbir množitelja svih njegovih težinskih cifri uz uslov da se za nulu ne prikazuje težinska osnova a za težinsku cifru jedan ne prikazuje množitelj.

Ja sam to ovako zamislio ali mi sustina ne dostaje pa bih voleo da mi neko pomogne i resi ovo da skontam kako se radi :

public static void main(String[] arguments)
{
Scanner ulaz= new Scanner(System.in);
System.out.println(“Unesite neki broj”);
int i;
if (ulaz.has.Next())
if (ulaz.has.NextInt())
{
broj=ulaz.next.Int();
for(i= 1; i<=broj; i++);

System.out.println(i);
}
}

Hvala unapred:alealeee:

ivan90BG
20.1.2015, 22:37
Izvinjavam se svima što ne znam, ali šta je to težinske cifre broja, i šta su njihovi množitelji? :icon_scra

Twisterzemun
20.1.2015, 23:31
Izvinjavam se svima što ne znam, ali šta je to težinske cifre broja, i šta su njihovi množitelji? :icon_scra

Tezinske cifre broja se odredjuju na osnovu pozicija cifara u broju i vazi za svaki brojni sistem. Ako npr imas: 10101010101010
prva jedinica ima najvecu vrednost tj. najteza je cifra, dok zadnja nula ima najmanju tezinu. A za te mnozitelje prvi put cujem

Rajko92
21.1.2015, 0:37
Pretpostavljam da su mnozitelji stepeni desetke, u dekadnom sistemu, dvojke u binarnom, itd.

Na primer, broj 1234 se moze zapisati kao: 4*10^0 + 3*10^1 + 2*10^2 + 1*10^3. A u zadatku se trazi, da se za 10^0 ne pise to, nego da se jednostavno izostavi (jer je jedinica neutral za mnozenje). I drugi uslov bi bio da ako se radi o tezinskoj cifri 1, da ne pise 1*10^n, nego samo 10^n. To je moja pretpostavka samo.


I onda bi neki kod za to bio ovakav:
i=0;
while(n!=0) {
if(i==0)
printf("%d", n%10);
else if(n%10==1) {
printf(" + 10^%d", i);
}
else {
printf(" + %d *10^%d", n%10, i);
}
n = n/10;
i++;
}


To bi bio neki (neproveren) C kod, a nije ga tesko prebaciti u javu.

Howard1
21.1.2015, 15:39
Hvala momci:), vidim ovde ima i profesionalaca za programiranje a ja sam pocetnik, ubijaju nas na obuci koja nije za pocetni nivo i pocetnike nego za one koji to vec rade :(

ETR1
21.1.2015, 16:44
Hvala momci:), vidim ovde ima i profesionalaca za programiranje a ja sam pocetnik, ubijaju nas na obuci koja nije za pocetni nivo i pocetnike nego za one koji to vec rade :(

Dobro je pa nisi video programiranje sa mog faksa :D

Dzungla
21.1.2015, 18:44
^Laslo Kraus!? :D

Pošto mi se po postavci čini da treba dobiti sumu ("... zbir množitelja ..."), trebalo bi rastaviti string pa sabrati ....


Samo zameni sa Scanner kodom za ovu readLine(); f-ju iz acm biblioteke,


import acm.program.*;

public class brsis extends ConsoleProgram {
public void run(){

String broj=readLine();
println(suma(broj));

}
public static int suma(String input)
{
char[] charArray = input.toCharArray();
int sum = 0;
for (int index = 0; index < input.length(); index++)
{
sum += Integer.parseInt(charArray[index] + "");
}
return sum;
}


}


* Pejstovah iz kompajlera ... radi.


Opet, s' druge strane, ako treba i ispis recimo 2015 = 2*10^3 + 10^1 + 5 *10^0 (mada bih izostavio i ovo jer je =1, dakle samo množilac), e onda treba concat stringa ... xD

dsl94
24.1.2015, 2:27
Treba mi savet, imam Java web aplikaciju(Srtuts framework), postoji i mobilna verzija tog sajta i potrebno je napraviti njenu android verziju e sad kako je to najbolje(najlakse) odraditi?

Da se ta verzija malo dotera i prepravi i ubaci u webview ili da se kuca kompletna aplikacija za android?

brano88
24.1.2015, 3:07
Licno bih napisao RESTful web servis a zatim Android aplikaciju koja ce pristupati resursima putem RESTful web servisa. Moje licno misljenje. Razmotri druga misljenja takodje.

Howard1
24.1.2015, 19:06
Dobro je pa nisi video programiranje sa mog faksa :D

Ja sam elektronicar nisam programer:D, a u programiranju sam pocetnik, ucim tek osnovne stvari :). Drago mi je sto na ovom forumu ima dosta profesionalaca sto se tice programiranja (Dzungla, Rajko92, Voodoo itd ... ) pa mogu malo da se oslonim na pomoc profesionalaca. Idem vec mesec dana na ubrzani kurs Jave za jednu firmu koja trazi talentovane studente informatike pa moram da radim brzo i ucim "punom parom". Ja sam prosle godine zavrsio master za masinstvo (master inzenjer masinskog inzenjerstva) pa mi je programiranje isto kao da sam uzeo da ucim medicinu posle masinstva :rofl:.
Imam jos jedan tacno uradjen zadatak pa bih hteo da zamolim da mi neko objasni odredjene kodove, ko ima volje :) jer mi bas zadatak nije najjasniji :(.

Zadatak kaze: Napisati program koji ce za uneti broj reci da li je uneti broj prost ili nije? U ovom slucaju je uneti broj 16 a prosti brojevi su oni brojevi koji su deljivi samo sa samim sobom i sa brojem jedan. Prvi prost broj je broj 2 (po Wikipediji :) ) tako da i u for petlji krece od broja 2. Evo i tacnog koda :

package vezbanje;

public class vezbanje {

public static void main(String[] args)
{
int broj = 16;
int brojDeljivih = 0;
int i;
for (i=2; i<broj-1; i++)
{
if(broj% i==0)
brojDeljivih++;
}
if(brojDeljivih == 0)
System.out.println("Uneti broj" + broj + "je prost broj");
else
System.out.println("Uneti broj" + broj + "nije prost broj");
}

}

Moje pitanje je zasto ide u for petlji i<broj - 1 (zasto -1? ) i zasto se stavlja na pocetku brojDeljivih = 0, i posle mi nije jasno sta tacno znaci uslov if (brojDeljivih ==0) i zasto se on poredi sa nulom posto ovaj znak == oznacava poredjenje ako sam upravu ?

ETR1
25.1.2015, 12:49
Imaš i drugu varijantu sa logičkom promenljivom.

class Prostbroj{
public static void main (String [] args){
int br,i;
boolean nadjen;
System.out.print ("Unesi broj.");
br=TextIO.getlnInt();
nadjen=true;
i=2;
while (i<br/2 && nadjen ){
if (br%i==0){
nadjen=false;
}
i++;
}
if (nadjen){
System.out.print ("Broj je prost.");
}
else{
System.out.print ("Broj je slozen.");
}
}
}

Dzungla
25.1.2015, 20:21
Krenuh ja "referat" a ne pročitah kod ... (Napišem primer).

Da ne dupliram postove, evo ga zadtak iz primera:

import java.util.Scanner;

public class prost{

public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.print("Unesi broj : ");
int broj = sc.nextInt();
// sam mu dodeljujes vrednost
int brojDeljivih = 0;
// na pocetku nema dokaza o deljivosti

for (int i=2; i<broj; i++)
{
if(broj%i==0){
brojDeljivih++;
System.out.print("i je :"+i+", broj je "+broj/i+ "\n");
System.out.println("Dokazuje "+brojDeljivih+". put da nije prost broj ");
// ove linije dodadoh da vidis sta ide kroz petlju
}
else
System.out.println("i je :"+i+", broj je "+broj+ "\n");
}

if(brojDeljivih == 0)
System.out.println("Uneti broj " + broj + " je prost broj");
else
System.out.println("Uneti broj " + broj + " nije prost broj");
}
}


Ja sam ga rastavio da bi video kako ide petlja i kako radi operator dodele vrednosti ++, nadam se da neću tebe zbuniti koliko sam sebe! Hehe

Drugo "broj -1" je u stvari poslednja vrednost "i < broj", zbunih se i sam prilično, moram priznati! ^

I da, == jeste operator poređenja, rezultat je logičkog tipa (true/false) i to kao jednakost za vrednosne tipove i string, za referencijalne tipove da li reference imaju istu vrednost


Nadam se da ćeš ^ naći odgovore na pitanja iz


Moje pitanje je zasto ide u for petlji i<broj - 1 (zasto -1? ) i zasto se stavlja na pocetku brojDeljivih = 0, i posle mi nije jasno sta tacno znaci uslov if (brojDeljivih ==0) i zasto se on poredi sa nulom posto ovaj znak == oznacava poredjenje ako sam upravu ?

Howard1
26.1.2015, 0:02
ETR 1 svaka cast, vidi se da i ti i clan Dzungla imate bas dosta znanja i da ste profesionalci u ovome :).Jedno pitanje, odakle da ucim zadatke iz Jave i kako je najbolje savladati programski jezik i resavanje ovih zadataka ?

Dzungla
26.1.2015, 2:56
Jedno pitanje, odakle da ucim zadatke iz Jave i kako je najbolje savladati programski jezik i resavanje ovih zadataka ?

Kao i svaki objekno orijentisani jezik, kreneš sa C (proceduralni :D). Da, nažalost, ma koliko delovalo smešno, trebalo bi tako početi ...

E sad, ima prilično dobre literature koja kreće sa svojom tematikom skoro pa od nule pa bih ti mogao predložiti sledeće:

Java : kompletan priručnik (http://www.mikroknjiga.rs/store/prikaz.php?ref=978-86-7555-378-6) (Herbert Schildt)

Prvih 10 poglavlja sigurno nije promenjeno, a to je ono što treba da savladaš - prilično detaljano je odrađeno, pomoglo bi ti dosta. Obimno je, ali detaljno i postupno!

E sad, po onome što zaključih iz tvojih postova, ako ti java treba za nešto iz tvoje struke i kursa koji pomenu evo i predloga: zbirke rešenih zadataka (http://home.etf.rs/~kraus/knjige/rzj.html)
Ali zbog načina na koji je pisana, predložio bih da prođeš kroz neki uvod pre nego se upustš u ovu avantutu! heh

Imam još jednu, koju bih ti i najpre preporučio, ako ti jezik nije problem, jer je urađena više kao uvod u samo programiranje, a bazirana na Javi.

The Art and Science of Java (http://cs.stanford.edu/people/eroberts/books/ArtAndScienceOfJava/)

Ako se odlučiš za tu varijantu, OBAVEZNO isprati i ova predavanja (https://www.youtube.com/watch?v=KkMDCCdjyW8&list=PL84A56BC7F4A1F852)
Jednostavno, Mehran će te čak i nasmejati! :)

Bakster
28.1.2015, 19:03
Sta mislite o ovom sajtu za ucenje jave (http://www.codecademy.com)? Preporucio bih ga komsiji - treba mu za neki ispit ili sta god, ja nemam zivce da bilo koga ucim... meni ono deluje pristojno i logicno ali opet mozda zato sto vec znam kako sta ide... ako je neko imao neka iskustva s ovim sajtom, da li ce moci nesto da nauci odande i polozi ispit...? ako ne, moracu ja da mu pomazem.... and i dont want to... :facepalm

Howard1
16.2.2015, 12:03
Imam odlicne zadatke u PDF-u za ucenje Java programskog jezika za fakultete. Ja bi to hteo da okacim ovde kao link mediafire koji je licno moj upload ali ne znam da li smem zbog pravila foruma ili moze nekako drugacije ?

I like games
23.2.2015, 23:08
Šta preporučujete da se koristi za pravljenje GUI aplikacija u Javi? U knjizi koju imam je opisan AWT i Swing, pa me zanima da li se to koristi u stvarnosti?

ivan90BG
24.2.2015, 23:07
Swing se koristi, nije da se ne koristi. Samo ne bih mogao taćno da imenujem koje aplikacije su pisane na Swingu. Ali znam za jedan primer, a to je NetBeans razvojno okruženje. Pored Swinga imaš i SWT (potekao od Eclipse-a), a najnovija Java GUI biblioteka je JavaFX. I to je zvanična biblioteka koja se nalazi standardno u Javi 8 sigurno, ne znam da li u 7. To je totalno drugačije, GUI može da se definiše u XML jeziku, može da se stilizuje u CSS-u, samo mu podrška za pisanje sopstvenih rutina za iscrtavanje nije baš najbolja, tu je Swing jači. Za SWT ne mogu ništa da kažem, nisam probao, ali Eclipse je napravljen sa njim, tako da bi trebalo da vredi nečemu :).

Naravno, sa kojom god bibliotekom da radiš, u svakoj iole ozbilljnoj GUI aplikaciji ti prosto nema druge nego da pišeš svoje GUI komponente, jer će ti biti jasno da ono što želiš ne možeš da postigneš sam sa komponentama koje nudi biblioteka. Onda ćeš morati verovatno da modifikuješ neke od postojećih komponenti, najverovatnije text boxove, tab kontrole, da praviš svoje varjante toolbar-ova, ili možda kontrolu za prikaz staze kroz foldere ili šta god. Eto recimo pogledaj uTorrent, ima onaj grafikon, to mora da se pravi. Tako da je dosta važno da biblioteka dozvoljava lako pravljenje svojih komponenata. JavaFX zbog mogućnosti stilizovanja CSS-om olakšava pravljenje novih komponenti modifikovanjem i slaganje postojećih, a dobar deo modifikacija u programima koji ne rade ništa preterano fensi se tako lakše može uraditi u JavaFX-u, ali kod elemenata kao što taj grafikon u uTorrent-u ne pomaže stilizovanje i sklapanje od postojećih komponenti već mora da se crta ručno. U tom domenu Swing i JavaFX imaju različite modele, čini mi se da je swing flexibilniji.

TLDR
Swing je sasvim adekvatna GUI biblioteka, koristi se, nekad je bila etiketirana kao spora, ali to je prošlost. Ipak osim Swing-a probaj i JavaFX, novu java GUI biblioteku, ima jako lepe stvari.

Howard1
25.2.2015, 0:18
Pitanje
Kod sa slike radi
http://www.dodaj.rs/f/3B/8l/QszSgj8/problem-u-programu.jpg

e sada moje pitanje je kako da dobijem blackscreen a ne sivu pozadinu kao sto je kod mene pri pokretanju programa ?

NIx Car
25.2.2015, 1:10
nacrtaj crni pravougaonik da ti bude pozadina :)

brano88
25.2.2015, 1:42
Šta preporučujete da se koristi za pravljenje GUI aplikacija u Javi? U knjizi koju imam je opisan AWT i Swing, pa me zanima da li se to koristi u stvarnosti?


Samo ne bih mogao taćno da imenujem koje aplikacije su pisane na Swingu.

IntellijIDEA sa ostalim proizvodima JetBrains-a :a_whistli

Uglavnom neces naci opstenamjenske aplikacije koje koriste Swing UI toolkit. Obicno se koristi za poslovne aplikacije. Dakle za specijalizovani softver za specijalne korisnike. Npr. kucaj Baraza HRMS. Softver za kadrovsku evidenciju.
Licno o Swingu:
Nakon nekih 4 godine koriscena mogu slobodno reci da je nadaleko jedan od najgorih UI toolkita s kojima sam radio. Jedan "even listener" je "Single Abstract Method" interfejs, drugi ima tri metoda, treci se poziva preko nekog drugom metoda itd. Neintuitivan... Ma haos zivi! Npr. kod JavaFX 8 svi "event handler-i" (ekvivalent event listener-a u Swingu) su SAM interfejsi. To je dobro jer se mogu zamijeniti lambdom.

JavaFX 8 je fantasticna ali prilicno nezrela. JavaFX 8 je ono sto sam oduvijek zelio da bude Swing. Dokumentacija se popravlja, tutorijali se mnoze i podrska trecerazrednih developera raste iz dana u dan. Ja se polako prebacujem na nju i napustam Swing.

SWT - Licno, nikada ga nisam koristio. Znam samo da je asistent s mog fakulteta napisao jedan od najboljih ERP sistema u okolini i da je koristio SWT za UI. Dakle, mogao bi da ga razmotris.

Howard1
25.2.2015, 1:54
nacrtaj crni pravougaonik da ti bude pozadina :)

Koji je to kod? Da li ga ubacujem kao Graphics ili? Nisam te bas najbolje razumeo :(. Znaci pri pokretanju moje aplikacije ja imam sivu pozadinu kao na sledecoj slici:

http://www.dodaj.rs/f/32/Qm/35SAhuAE/siva-pozadina-aplikacije.jpg

a ja zelim da bude crna pozadina a ne siva, kako to da promenim ?

brano88
25.2.2015, 2:19
a ja zelim da bude crna pozadina a ne siva, kako to da promenim ?

Ovako nesto:

public class JavaIgra {
private JFrame frame = new JFrame("Java igra");

public JavaIgra() {
frame.add(new BackgroundPanel());
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_C LOSE);
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(JavaIgra::new);
}

private class BackgroundPanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLACK);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
}

@Override
public Dimension getPreferredSize() {
return new Dimension(640, 480);
}
}
}

Howard1
25.2.2015, 2:23
Probacu pa javim sta sam uradio :alealeee:

Howard1
25.2.2015, 22:49
Hvala brano88 :alealeee:

Nije mi tvoj kod direktno pomogao ali sam dobio ideju kako to da uradim:aplauz:.
samo je trebalo postaviti ovako u "set delu" da ga tako nazovem:
game.setBackground(Colour.black);;

I na kraju sam uspeo ono sto sam hteo a evo i slike

http://www.dodaj.rs/f/1Z/34/14700Xf1/dare-igrica.jpg

Hvala jos jednom :)

ivan90BG
26.2.2015, 12:57
IntellijIDEA sa ostalim proizvodima JetBrains-a :a_whistli

Spekulisao sam u glavi o tome, ali pošto je iscrtavanje interfejsa IDEA-e totalno custom napisano, nisam hteo da ništa da napišem, jer sam kontao da su možda napravili nešto svoje interno van Swinga.

Andre of Astora
24.3.2015, 21:03
Ljudi ako moze pomoc molim vas znam da je banalan zadatak ali ja se ubi da ga resim i nista a treba mi resenje.:(

Za dvodimenzionalni niz dimenzije cetiri puta cetiri izracunati proizvod neparnih elemenata na glavnoj dijagonali matrice
koristiti klasu skener za unos elemenata te matrice.

brano88
24.3.2015, 22:25
Ljudi ako moze pomoc molim vas znam da je banalan zadatak ali ja se ubi da ga resim i nista a treba mi resenje.:(

Za dvodimenzionalni niz dimenzije cetiri puta cetiri izracunati proizvod neparnih elemenata na glavnoj dijagonali matrice
koristiti klasu skener za unos elemenata te matrice.

U bogami ko god da je ovo zadao dobar je!

- Znaci, treba ti 2D niz koji deklarises ovako npr.:

int [][] matrica = {{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}};

- Kako uzeti brojeve po dijagonali?
Znaci, iz prvog niza ({1,2,3,4}) u 2D nizu uzmes prvi (nulti clan), iz drugog drug, iz treceg treci i iz cetvrtog cetvrti. Koristis "for" petlju.

- Provjeris da li je paran. Mozes koristiti % operator za to. Npr.

if((5 & 1) == 0) {
System.out.println("Paran");
} else {
System.out.println("Neparan");
}

Ukoliko je neparan, dodas ga u neki drugi prethodno deklarisani niz.

- Koristis "for" petlju da izracunas proizvod brojeva.

Damirns
17.5.2015, 21:00
Unapred se izvinjavam adminima jer verovatno ovake slicne teme postoje, ali dosta toga sto sam nasao je starijeg datuma pa ako neko ima vremena 2-3 minuta da mi ispise bio bih mu zahvalan. :)

Sta mozete da mi preporucite kao pocetniku u ovoj prici u pogledu knjiga,youtube snimaka i ostalo da bi savladao malo ovaj jezik?

Ivan452
17.5.2015, 21:46
Unapred se izvinjavam adminima jer verovatno ovake slicne teme postoje, ali dosta toga sto sam nasao je starijeg datuma pa ako neko ima vremena 2-3 minuta da mi ispise bio bih mu zahvalan. :)

Sta mozete da mi preporucite kao pocetniku u ovoj prici u pogledu knjiga,youtube snimaka i ostalo da bi savladao malo ovaj jezik?

Neću ti baš direktno odgovoriti na pitanje, ali ajde svejedno da napišem.
Ako hoćeš da savladaš bilo šta prva stanica ti je Google. Ako si početnik, veruj mi da za 99% pitanja koje imaš na internetu već postoji odgovor. A to uključuje i preporuke za knjige, video tutorijale itd.

Naravno, uvek je dobro uključiti se u "community" bilo kao neko ko traži pomoć, nudi je, ili jednostavno nešto piskara.
Međutim, prva lekcija u traženju pomoći je da prvo pokušaš da pomogneš sebi. I to ne samo u ovom slučaju, već i sutra na poslu, i generalno (cheesy) u životu. Niko ne može pomoći onome ko ne želi sam sebi da pomogne.

Ako želiš da napreduješ, ako želiš brzu i kvalitetnu pomoć i preporuku onda prvo istraži malo sam. Pogledaj šta je popunarno na internetu. Napravi presek sa više sajtova i vidi šta je u tom preseku. I onda dođeš ovde, ili bilo gde drugo, i kažeš "Ljudi, želim da naučim JAVU. Nisam bio siguran odakle da počnem pa sam malo kopao po internetu. Ono što sam našao jeste To1, To2 i To3. To1 mi deluje kao dobro zbog razlog1, razlog2, razlog3. Ali sa druge strane To2 ima prednost1, prednost2, prednnost3. Pa kako ne bih želeo da lutam i krenem pogrešnim pravcem. Jel može neko da mi kaže nešto više o ovome ili već šta ima da preporuči?".
Ovakav pristup će ti dvostruko ići u korist. Jer sa jedne strane ćeš sigurno brže dobiti odgovor na pitanje, a sa druge strane ćeš istraživanjem i sam nešto da naučiš.

Srećno :)

Damirns
18.5.2015, 0:21
Krenuo sam na kurs osnove programiranja, ali imam trenutno puno obaveza i iskreno nisam u toku sa trenutnim radom tamo. Cuo sam od par njih koji su na kurs dosli pripremljeni da su koristili code academy,linda.com,na youtube bucky kanal, neke knjige za c++ sto je dosta slicno za javu. Znaci nije bas da nemam nikakve informacije i da se nisam raspitao, nego kad zavrsim sa obavezama koje imam da imam vec napravljen plan sta da gledam(znaci imam trenutni stav prema ovom informisanju o javi kao sto si naveo), jer na internetu ima jako puno ljudi koji sto bi se reklo "izmisljaju toplu vodu" pa da se ne bavim sa njihovim snimcima i blogovima u ovom slucaju, nego da napravim taj presek sto si spomenuo i imam neko misljenje odakle da krenem preko leta i kad prodje guzva. Eto ako mi niko nista ovde ne kaze, a ja ne nadjem do tada krenuo bi od gore navedenih izvora :)

Teva
18.5.2015, 12:11
Po meni su knjige zakon, ali one umeju da budu suvoparne i smarajuće, posebno ako počinješ...

Moja preporuka ti je da pogledaš Courseru, OCW i sajtove slične orjentacije sa već gotovim i formiranim kursevima (video lekcije, beleške, zadaci). Prilično su dobri i ja neretko slušam takve kurseve...

Ja lično najviše gotivim MIT OpenCourseWare pa evo ti link pogledaj :) Imaju i intro u javu, al kolko sam video rade sa JDK6, kao početniku ne bi trebalo da ti bude toliko bitno jer osnove su iste i u novijim verzijama, al overi za svaki slučaj i ostale :) Srećno :)

http://ocw.mit.edu/courses/intro-programming/

FakeDeath
31.5.2015, 14:17
Imam dva podatka tipa Date, prvi oblika dd.MM.yyyy. HH:mm koji predstavlja vreme pocetka utakmice i drugi trajanje utakmice u minutima.
Kako da ih saberem i dobijem novi Date dd.MM.yyyy. HH:mm?
Ali da radi i na primer:
1.1.2001. 23:30 + 91 = 2.1.2001. 01:01

dsl94
31.5.2015, 14:42
Date d1 = ...
Date d2 = ...

long sum = d1.getTime() + d2.getTime();

Date sumDate = new Date(sum);

A da dodas minute

static final long ONE_MINUTE_IN_MILLIS=60000;//millisecs

long t=date.getTime();
Date afterAddingTenMins=new Date(t + (10 * ONE_MINUTE_IN_MILLIS));

Ivan452
31.5.2015, 15:43
Možeš da koristiš Date klasu kao što ti je dsl objasnio. Radiće posao za ovo što ti treba. Ali se ona više gotovo i ne koristi. I koliko se sećam i sama JAVA će ti reći da to nije najsrećnije rešenje i preporučiće ti da koristiš Calendar klasu.

Ali u osmici su uveli java.time paket koji je mnogo bolje uređen. Tako da ti preporučujem da koristiš to ili Joda Time. A da ti ne objašnavam ono što je već objašnjeno pogledaj ovde primere:
http://www.leveluplunch.com/java/examples/add-minutes-to-date/
(konkretno Java 8 Date and Time API i Joda Time)

FakeDeath
6.6.2015, 11:26
Може ли се онемогућити системско едитовање фајлова, односно дозволити измену фајла само из одређеног програма?

Ivan452
6.6.2015, 13:42
Може ли се онемогућити системско едитовање фајлова, односно дозволити измену фајла само из одређеног програма?

Npr. kriptuješ fajl tako da može da se otvori samo iz tog programa.

FakeDeath
8.6.2015, 14:55
Како се то ради?

Ivan452
8.6.2015, 16:59
Како се то ради?

Zavisi od toga koji ti je nivo sigurnosti potreban. Iskreno, nikada tako nešto nisam radio ali u teoriji mi je poznato. Tako da uzmi ovo što ti napišem sa rezervom, barem dok se neko upućeniji ne javi.

Generalno, rešavanju problema možeš da pristupiš sa dve-tri strane:
1. Da kriptuješ ono što upisuješ u fajl. Što znači da će svako moći da vidi sadržaj fajla ali će mu informacije neće biti od značaja. Najjednostavniji primer je tzv. Cezarov cypher. Gde svako slovo uvećaš za jedan (ili više). Tako da umesto: FakeDeath bi pisalo: GblfEfbui
Naravno, postoje mnogo napredniji algoritmi od ovog.

2. Da kriptuješ ceo fajl. Znači da upisuješ šta imaš i onda na kraju kriptuješ ceo fajl kao takav. Verujem da postoje i gotove biblioteke za ovakve stvari (proguglaj) i evo ovde primera:
http://www.codejava.net/coding/file-encryption-and-decryption-simple-example

3. Kombinacija prva dva. Prvo da kriptuješ ono što upisuješ, a onda da kriptuješ i ceo fajl.

Ja bih ti preporučio drugu opciju. Mislim da je to sasvim dovoljno. Upisuješ binarno i prilikom čuvanja kriptuješ.

Andre of Astora
27.6.2015, 16:18
Ima li neki java guru da moze ovo uraditi molim vas :n_klanja:

Za dvodimenzionalni niz dimenzije cetiri puta cetiri izracunati proizvod neparnih elemenata na glavnoj dijagonali matrice
koristiti klasu skener za unos elemenata te matrice.

brano88
27.6.2015, 16:57
Ima li neki java guru da moze ovo uraditi molim vas

Za dvodimenzionalni niz dimenzije cetiri puta cetiri izracunati proizvod neparnih elemenata na glavnoj dijagonali matrice
koristiti klasu skener za unos elemenata te matrice.

A da ipak prvo pokusas nesto..

Howard1
28.6.2015, 0:00
Nacrtaj prvo algoritam na papiru kako bi to radilo, posle ce ti biti lakse kad imas ideju.

Andre of Astora
30.6.2015, 15:20
A da ipak prvo pokusas nesto..

druze ja sigurno ne bi opet postovao zadatak da sam uspeo pokusao sam ali dzaba i zato sam opet dosao ovde nisam lenj ili sta vec mislis da jesam
al vidim da je problem da neko pomogne

I like games
30.6.2015, 17:16
Glavna dijagonala matrice znači da su i i j jednaki...

ETR1
30.6.2015, 22:04
Ima li neki java guru da moze ovo uraditi molim vas :n_klanja:

Za dvodimenzionalni niz dimenzije cetiri puta cetiri izracunati proizvod neparnih elemenata na glavnoj dijagonali matrice
koristiti klasu skener za unos elemenata te matrice.

Npr. ovako nešto (deo programa):

int proizvod=0;
for(int i=0; i<n; i++){
if(n[i][i] % 2 != 0){
proizvod*=n[i][i];
}
}

mica1709
6.8.2015, 14:18
Potrebna mi je pomoć oko jednog zadatka u Javi FX. Treba da napravim formu za dodavanje učenika na kurs koja sadrži padajuću listu. Podaci u padajućoj listi treba da se učitaju iz tabele kurs koja sadrži imena kurseva. Izborom odgovarajućeg kursa i klikom na dugme "Unesi podatke" treba da se unese id tog kursa u tabelu kurs_ucenik. Problem mi je što ne znam kako da u padajućoj listi učitam podatke iz tabele kurs. Evo šta sam do sada uradio:

Main klasa:

package application;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.control.ToolBar;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import unos.*;
import tabele.*;

public class Main extends Application {
@Override
public void start(Stage primaryStage) {
BorderPane pane = new BorderPane();
GridPane grid = new GridPane();

VBox topContainer = new VBox();
MenuBar mainMenu = new MenuBar();
ToolBar toolBar = new ToolBar();

topContainer.getChildren().add(mainMenu);
pane.setTop(topContainer);

Menu podaci = new Menu("_UNOS PODATAKA");
MenuItem ucenik_kurs = new MenuItem("Upisivanje učenika na kurs");
podaci.getItems().add(ucenik_kurs);

ucenik_kurs.setOnAction(e -> new UpisivanjeUcenikaNaKurs());

Menu izlaz = new Menu("_IZLAZ");
MenuItem izlazm = new MenuItem("Izlaz");
izlaz.getItems().add(izlazm);

izlaz.setOnAction(e -> System.exit(0));

mainMenu.getMenus().addAll(podaci, izlaz);

Scene scene = new Scene(pane, 800, 600);
primaryStage.setTitle("Aplikacija za evidenciju učenika škole stranih jezika");
primaryStage.setResizable(false);
primaryStage.setScene(scene);
primaryStage.show();
}

public static void main(String[] args) {
launch(args);
}

}

mica1709
6.8.2015, 14:20
Drugi deo koda.

Klasa "UpisivanjeUcenikaNaKurs":

package unos;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import javax.swing.DefaultComboBoxModel;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;

public class UpisivanjeUcenikaNaKurs extends GridPane {

public UpisivanjeUcenikaNaKurs() {
GridPane grid = new GridPane();

Stage stage = new Stage();
Scene scene = new Scene(grid, 800, 600);
stage.setTitle("Upisavanje učenika na kurs");
stage.setResizable(false);
stage.setScene(scene);
stage.show();

grid.setAlignment(Pos.CENTER);
grid.setPadding(new Insets(25, 25, 25, 25));
grid.setHgap(5);
grid.setVgap(5);

Label ime_kursa = new Label("Izaberite ime kursa: ");
ime_kursa.setFont(Font.font("Consolas", FontWeight.BOLD, 20));
grid.add(ime_kursa, 0, 0);

ComboBox<String> comboBox = new ComboBox<>();
comboBox.setPrefWidth(100);
grid.add(comboBox, 1, 0);

Button btDodaj = new Button("Unesi podatke");
btDodaj.setFont(Font.font("Verdana", FontWeight.BOLD, 13));
btDodaj.setPrefSize(130, 30);
grid.add(btDodaj, 1, 7);

comboBox.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
java.sql.Connection con = null;
Statement statement = null;
String url = "jdbc:mysql://localhost/skola_jezika";
String username = "root";
String password = "";
ArrayList<String> comboBoxVrednosti = new ArrayList<String>();
ObservableList<String> data = FXCollections.observableArrayList();
try {
con = DriverManager.getConnection(url, username, password);
statement = con.createStatement();
ResultSet rs = statement.executeQuery("SELECT ime_kursa FROM kurs");

while(rs.next()) {
String ime_kursa = rs.getString("ime_kursa");
comboBoxVrednosti.add(ime_kursa);
}
con.close();

} catch (SQLException ex) {
ex.printStackTrace();
}

DefaultComboBoxModel model = new DefaultComboBoxModel(comboBoxVrednosti.toArray());

}
});

btDodaj.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
if(comboBox.getValue() != null) {
java.sql.Connection con = null;
Statement statement = null;
String url = "jdbc:mysql://localhost/skola_jezika";
String username = "root";
String password = "";
try {
con = DriverManager.getConnection(url, username, password);
Statement st = (Statement) con.createStatement();
st.execute("INSERT INTO kurs_ucenik (id_kursa)" +"VALUES ('" + comboBox.getValue() + "')");
con.close();
} catch (SQLException ex) {
ex.printStackTrace();
}

Alert alert2 = new Alert(AlertType.INFORMATION);
alert2.setTitle("Dialog");
alert2.setHeaderText("Uspešno ste uneli id kursa!");
alert2.setContentText(null);
alert2.showAndWait();

} else {
Alert alert = new Alert(AlertType.ERROR);
alert.setTitle("Uzbuna");
String s = "Molimo Vas popunite sva polja!";
alert.setContentText(s);
alert.showAndWait();
}
}
});

}

}

mica1709
8.8.2015, 9:04
Imam samo još nekoliko dana da završim ovo.

Ivan452
9.8.2015, 22:53
@mica1709

Disclaimer: nikada nisam radio u JavaFX, ali kako ne dobijaš odgovor rekoh ajde da ti pomognem.

Kažeš "ne znam kako da u padajućoj listi učitam podatke iz tabele kurs". OK. Ovde imaš dva dela:
1. Da isčitaš podatke iz baze
2. Da napuniš padajuću listu tim podacima.
Deluje mi da većinu koda imaš već.

Prvo, testiraj da li ti radi ovo čitanje iz baze OK. U odvojenoj nekoj metodi stavi da ti čita iz baze i da ti ispiše u konzoli ili gde god. Na prvi pogled mi deluje da radi, ali da budeš siguran.

Ako dobro uzimaš podatke onda prelaziš na popunjavanje.

comboBox.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
java.sql.Connection con = null;
Statement statement = null;
String url = "jdbc:mysql://localhost/skola_jezika";
String username = "root";
String password = "";
ArrayList<String> comboBoxVrednosti = new ArrayList<String>();
ObservableList<String> data = FXCollections.observableArrayList();
try {
con = DriverManager.getConnection(url, username, password);
statement = con.createStatement();
ResultSet rs = statement.executeQuery("SELECT ime_kursa FROM kurs");

while(rs.next()) {
String ime_kursa = rs.getString("ime_kursa");
comboBoxVrednosti.add(ime_kursa);
}
con.close();

} catch (SQLException ex) {
ex.printStackTrace();
}

DefaultComboBoxModel model = new DefaultComboBoxModel(comboBoxVrednosti.toArray());

}
});

U ovom delu koda, koliko vidim ti kad god klikne korisnik na combobox, program čita iz baze kurseve, i upisuje ih u ArrayList<String> i na kraju tu listu dodaje u model. Ovo bi možda (ali je veliko možda) i radilo, ali ti nigde comboboxu nigde ne dodaješ taj model u koji si ubacio listu.

Ali, prvo ovo je vrlo loš pristup. Da svaki put kada klikne na combo box on isčitava ovako nešto iz baze je nepotrebno.
Uradi to kada korisnik uđe na ovu formu (panel ili kako god se zove), i odmah popuni combobox sa isčitanim vrednostima.
Evo ovde možeš da nađeš veliki broj načina kako da dodaš vrednosti u combobox (i mislim da ni jedan ne koristi ovaj DefaultComboBoxModel:
https://docs.oracle.com/javafx/2/ui_controls/combo-box.htm

brano88
12.8.2015, 8:28
Nikad! Ali apsolutno nikad ne zatvaraj konekciju u "try" bloku!

To se uvijek radi u "finally" bloku:

finally {
try {
if (con != null) {
con.close();
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}

Drugo, dodajes ime kursa u observableArrayList pa onda pozivas comboBoxVrednosti.setItems(). Ovako nesto:

while (rs.next()) {
String ime_kursa = rs.getString("ime_kursa");
data.add(ime_kursa);
}

comboBox.setItems(data);

Najbolje ti je da koristis standardan DAO pattern. Da razdvojis kod za pristup podacima od koda za graficki interfejs. U tom slucaju bi imao Kurs klasu koja sadrzi neophodna svojstva s "overidovanim" toString metodom koji ti vraca npr. ime. Tako da mozes direktno proslijedjivati instance Kurs klase u observableArrayList. Realno je da neces daleko dogurati koristeci trenutni pristup.

player1
12.8.2015, 8:31
Nikad! Ali apsolutno nikad ne zatvaraj konekciju u "try" bloku!

Iliti konkretnije ako je close u try blocku, bilo kakav exception bi doveo da konekcije koja nikad nece biti zatvorena.

brano88
12.8.2015, 11:31
Iliti konkretnije ako je close u try blocku, bilo kakav exception bi doveo da konekcije koja nikad nece biti zatvorena.

Naravno. Uz uslov da se konekcija uspjesno otvori. Treba nekad sjesti i razmisliti kako try-catch-finally funkcionise. :)

ballerina72
4.1.2016, 20:44
Radila sam zadatak koji je veoma jednostavan, naime, date su koordinate tri tačke, A(a1, a2), B(b1, b2) i C (c1, c2) koje formiraju trougao i data je neka tačka P (x, y). Treba odrediti da li postoji trougao ABC i ako postoji da li tačka P leži unutar njega.
Ukoliko se tačka P nalazi unutar trougla, onda će povrsina(APB)+povrsina(APC)+povrsina(BPC)=povrsina (ABC).
Ovo je kod koji sam ja iskucala:

public static double rastojanje (double x1, double y1, double x2, double y2){
double rast=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
return rast;
}
public static double povrsina (double a, double b, double c){
double s=((a+b+c)/2);
double pov=Math.sqrt(s*(s-a)*(s-b)*(s-c));
return pov;
}

public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner ulaz=new Scanner (System.in);
double a1, a2, b1, b2, c1, c2, x, y;
a1=ulaz.nextDouble();
a2=ulaz.nextDouble();
b1=ulaz.nextDouble();
b2=ulaz.nextDouble();
c1=ulaz.nextDouble();
c2=ulaz.nextDouble();
x=ulaz.nextDouble();
y=ulaz.nextDouble();

double a=rastojanje (b1, b2, c1, c2);
double b=rastojanje (a1, a2, c1, c2);
double c=rastojanje (b1, b2, c1, c2);

if (a+b>c && a+c>b && b+c>a){
double pc=rastojanje (x, y, c1, c2);
double pa=rastojanje (x, y, a1, a2);
double pb=rastojanje (x, y, b1, b2);
double pov=povrsina(a, b, c);
double pov1=povrsina(pa, pc, b);
double pov2=povrsina(pa, pb, c);
double pov3=povrsina (pb, pc, a);
double povuk=pov1+pov2+pov3;
if (povuk==pov){
System.out.print("Trougao postoji i tacka sa koordinatama: " + x + y + " pripada trouglu");
}
else {
System.out.print("Trougao postoji ali tacka ne pripada trouglu");
}
}
else
System.out.print("Trougao ne postoji");
}



ali, problem je u tome što ni za očigledan primjer mi ne pokazuje tačno, tj. iako je tačka unutar trougla meni štampa da tačka nije unutar trougla.

Da li neko možda zna gdje je greška?

voodoo_
5.1.2016, 0:33
Pre nego što uradiš "if (povuk == pov)", uradi

System.out.println("Povuk: " + povuk + ", pov: " + pov);

I vidi da li su brojevi baš različiti, ili su blizu. U prvom slučaju ti ne valja algoritam, u drugom se radi o grešci u zaokruživanju.

Kod reprezentacije realnih brojeva na kompjuteru uvek može da postoji greška u zaokruživanju (vidi floating point na wikipediji), a pritom ako vršiš sabiranje (kao npr pov1 + pov2 + pov3), greška se samo povećava. Zato se preporučuje da se double i float vrednosti ne porede direktno sa == , nego sa nekom tolerancijom, na primer za toleranciju od 2%:

if ((povuk > pov * 0.98) && (povuk < pov * 1.02)) { ... }

Neutrino
5.1.2016, 1:03
What Every Computer Scientist Should Know About Floating-Point Arithmetic (https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html)

Dosadna matematika može da se preskoči.

korisnickoime
5.1.2016, 15:59
if ((povuk > pov * 0.98) && (povuk < pov * 1.02)) { ... }

ili ovako nekako:

double eps = 0.0001;
if (Math.abs(var1 - var2) < eps) {...}

voodoo_
5.1.2016, 20:34
U moju odbranu, kucao sam kasno posle dugog radnog dana :kreza:

ballerina72
6.1.2016, 12:49
Ipak nije greška u zaokruživanju :(

Ali u svakom slučaju, hvala na savjetima! :)

ETR1
6.1.2016, 15:57
Možda da u IF-u staviš u zagradu (a+b) > c, itd... ovako možda samo poredi b sa c.

ballerina72
6.1.2016, 23:20
Nije tu problem... Danas nisam imala vremena, ali ću sjutra zadatak odraditi (kako bi moja baba rekla) 'Jovo nanovo', pa nadam se da će program ispravno raditi. Ako to ne uspije, pa ništa, čekam da počne škola profesoricu da pitam. :)

voodoo_
8.1.2016, 15:13
Za svaki slučaj, nakon unosa parametara uradi i njihov ispis, možda Scanner nije lepo isparsirao...