PDA

Prikaži potpunu verziju : Programiranje u Javi


marosh
15.1.2010, 14:47
Teo sam da vas pitam 2 pitanja pa ako neko zna i ako ga ne mrzi da mi odgovori...
1.Napisao sam jedan program ali ne znam kako da namestim da u promenljivu mogu da kucam neki text..(npr. kao sto kod tipa int se kuca celi broj..)Na guglu sam naso nesto sa stringom ali nista nisam razumeo posto sam tek poceo da programiram u javi.....
2. Ne znam kako(ili dal moze)da se napravi neka baza ili nesto gde bi program sacuvavao unesene podatke....

Eo koda programa

/*
*Prva nezvanicna Beogradska liga
*/

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

String Match1;
int rezultat1;


Match1=Typeit.inInt("Radnicki Nbg vs. ");
System.out.println("\n");
rezultat1=Typeit.inInt("Rezultat je ");
System.out.println("\n");
System.out.println("Rezlutat utakmice Radnicki Nbg protiv "+Match1+" je "+rezultat1);
System.out.println("\n");

//Izbacuje mi gresku incompatible types
}
}


Da napomenem tek sam poceo da ucim javu i zeleo bi da napravim ovj program u koji bi upisivao rezultate mog kluba i da bi kasnije mogao nekako u programu da nadjem te rezultate(npr preko pretrazivaca ili neceg slicnog...ovo je tek pocetak program i odnosi se samo na prvu utakmicu...
Nadam se da ce neko biti voljan i imati strpljenja da mi pomogne....:)

Yellua
15.1.2010, 21:41
To sto ti treba sam objasnila u ovoj temi http://www.sk.rs/forum/showthread.php?t=53522 , pa ti pogledaj ;)

Yellua
16.1.2010, 1:53
Ne smaras me, slobodno pitaj ;)

Znaci BufferedReader je vec gotova klasa, koju imas na izvolte.. Nju uvozis iz java.io paketa, tako sto na samom pocetku koda napises import java.io.* (ovo ce ti uvesti sve klase koje sadrzi java.io paket, a samim tim i BufferedReader)

i evo kako bi npr izgledao ovaj tvoj kod


import java.io.*;

public class NekaKlasa {
public static void main(String[]args) throws IOException {
BufferedReader Unos = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Unesite vrednost za Match1: ");
String Match1 = Unos.readLine(); //ovde se unosi taj string
System.out.println("Uneli ste: " + Match1); //ovde ispisujes na ekran
}
}

marosh
16.1.2010, 12:59
E hvala puno sve radi savrseno:)...samo hteo sam da te pitam dal znas kako da mi to sacuva podatke koje sam uneo da pri pokretanju programa ne moram da upisujem svaki put isto nego da mi ono upisao ostane upisano(valjda razumes sta hocu....nesto kao kreiranje nekog fajla u kom bi program sacuvavao podatke i da bi se taj fajl pokretao pri pokretanju program)....:D

Yellua
16.1.2010, 16:02
Mozes npr sve sto uneses da upisujes u neki .txt file.. Ali pri svakom ponovnom pokretanju programa, morao bi ponovo da ucitavas sve iz fajla u promenljive.. Evo ja cu ti sad dati neki primer, jer se tako najbolje vidi sve..

import java.io.*;


public class Blabla {
public static void main(String [] args) throws Exception{
File f = new File("izlaz.txt");
if (f.exists()) {

BufferedReader IzlazIzFajla = new BufferedReader(new FileReader("izlaz.txt")); //ovaj bufferedreader ti ustvari sluzi za citanje iz fajla.. kad napises IzlazIzFajla.readLine() on ti vrati String koji predstavlja jedan red u tom fajlu

BufferedReader Unos = new BufferedReader(new InputStreamReader(System.in));
String [] nizUnosa;
System.out.println("Do sada ste uneli: ");
String pomocnaPromenljiva = IzlazIzFajla.readLine();
int brojac=0;
//ovom while petljom brojim koliko ima redova u file-u
while (pomocnaPromenljiva != null) {
pomocnaPromenljiva = IzlazIzFajla.readLine();
brojac++;
}
IzlazIzFajla.close();
//ovim ponovo otvaram file
IzlazIzFajla = new BufferedReader(new FileReader("izlaz.txt"));
nizUnosa = new String[brojac+1];
//unos stringova iz fajla u niz stringova
for(int i=0; i<brojac; i++) {
nizUnosa[i] = IzlazIzFajla.readLine();
System.out.println(nizUnosa[i]);
}
//ovde pisem u file
System.out.println("Unesite nesto novo: ");
nizUnosa[brojac] = Unos.readLine();
PrintWriter UlazUFile = new PrintWriter(new FileWriter("izlaz.txt",true));
UlazUFile.append("\n" + nizUnosa[brojac]);
UlazUFile.close();
} else {
System.out.println("ne postoji file sa navedenim imenom");
}
}
}


PS moras napraviti prazan tekstualni fajl na mestu gde ti se nalazi program, a koji se u ovom slucaju zove izlaz.txt

marosh
16.1.2010, 17:19
I jel u ovaj txt document ne pisem vise nista???K0d programa pisem u njegovu klasu ili da dodam u txt???E i u txt da napisem public class izlaz ili ime klase glavnog koda...????

I hvala na svim odgovorima do sada.....

Yellua
16.1.2010, 17:25
Nisam sigurna sta tacno hoces da pitas, ali u txt file ne pises nista.. On ti sluzi za to da sacuva sve sto je korisnik do sada uneo.. Ovaj program sto sam navela prvo ispisuje sve sto je u fajlu, pa onda od korisnika trazi da unese jos nesto, i to stavlja u fajl.. To sam napravila samo da ti demonstriram kako se uzimaju podaci iz fajla i kako se u njega upisuju.. Ako ne napravis txt file, program ce ispisati da file sa navedenim imenom ne postoji..

Beagle
16.1.2010, 19:04
Obrati samo paznju da buffered reader na svom izlazu uvek daje string, pa ako ti treba broj (ili neki drugi tip podataka) moras da obavis konverziju (kasting).

Primer:

String aString = "78";
int aInt = Integer.parseInt(aString);

marosh
16.1.2010, 20:50
@yellua

Pa nije mi jasno kako da taj primer prilagodim sebi...:) i da ga ubacim u celi kod....A kod je predugacak pa ne mogu da ga napisem ovde:mad:

marosh
24.1.2010, 0:53
Hteo sam da pitam kako da ovaj kod dupliram 16 puta(tj.da me 16x pita ista pitanja)...
/*
*Prva nezvanicna liga Beograda
*created by vuk
*/

import java.io.*;

public class radnicki
{
public static void main(String[]args) throws IOException {
//promenljive
int rezultat1;
int brojgolova1;
int matchbrojgolova1;
int rezultatmatch1 ;
String txtrezultat1;//
String txtrnbvs1; //
String razmakveliki; //
String strelica; //
String rezultatje; //
String radnickipobednik;//
String pobednik1; //
String crtice; //
String txtbodovi;//
//uvod
System.out.println("");
System.out.println("------");
System.out.println("");
System.out.println("Kolo broj 1.");
System.out.println("");
System.out.println("");


//Match string
BufferedReader Unos = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Radnicki Nbg protiv ");
String Match1 = Unos.readLine();
System.out.println("");

FileWriter fWriter = null;
BufferedWriter writer = null;

brojgolova1 = Typeit.inInt("Broj golova Radnickog je ");
System.out.println("");

matchbrojgolova1 = Typeit.inInt("Broj golova " + Match1+ " je ");
rezultat1= brojgolova1 ;
rezultatmatch1=matchbrojgolova1 ;
razmakveliki=" "; //
txtrnbvs1="Radnicki nbg protiv "; //
txtrezultat1 = rezultat1+":"+rezultatmatch1;//
strelica=" --->";
rezultatje = "Rezultat je "; //
crtice= "-------";

System.out.println("");
System.out.println("Rezultat utakmice Radnicki Nbg protiv " + Match1 + " je " + rezultat1 + ":" + rezultatmatch1 ) ;
System.out.println("");
System.out.println("Domacin je bila ekipa ");
String Domacin1 = Unos.readLine();
System.out.println("");
{

if(brojgolova1>matchbrojgolova1) //petlja za 3 boda ukoliko je pobedio radnicki
System.out.println("Radnicki dobija 3 boda");

}

{

if(brojgolova1==matchbrojgolova1) //petlja ako je nereseno
System.out.println("Radnicki i ekipa " + Match1 + " dobijaju po 1 bod");

}

{

if(brojgolova1<matchbrojgolova1) //petlja okoloko je dobio match1
System.out.println("Ekipa " + Match1 + " dobija 3 boda ");

}





//petlja
try
{
fWriter = new FileWriter("kolo1.txt");
writer = new BufferedWriter(fWriter);
//novi red
writer.newLine();
writer.write(crtice); writer.newLine();
//novi red
writer.newLine();
writer.write(strelica);
writer.write(razmakveliki);

writer.write(txtrnbvs1);
writer.write (Match1); writer.newLine();
writer.newLine();
writer.write(strelica);
writer.write(razmakveliki);
writer.write(rezultatje);
writer.write(txtrezultat1); writer.newLine();
//ovo je ok sad(za rezultat i match


writer.newLine();


writer.newLine();


writer.close();
} catch (Exception e) {

}
}
}








Znaci trebalo bi da se duplira 16x a da svaki put sacuva u drugi txt file..psl help(da napomenem tek sam poceo da ucim u javi)

doctor
24.1.2010, 1:46
Ne znam kako bi islo u Javi, pogledaj kako se koriste for petlje. U Cpp je ovako:
for (int i = 0; i < 16; i++)
{
kod koji se ponavlja 16x
}


i = 0 -inicijalizacija varijable

i < 16 - uslov za trajanje petlje

i++ - povecanje i za 1 pri sledecem ponavljanju petlje.

U Javi ce biti malo drugacije. Eto, znas da ti trebaju for petlje :)

Btw mislim da bi ti isto ovako radila for petlja i u Javi, samo i++ zamenis sa i = i +1

holodoc
24.1.2010, 2:18
I u Javi postoje unarni operatori za inkrementiranje i dekrementiranje tako da je i++ potpuno ispravno ;) Usput @marosh, imaš mnogo đubreta u kodu tipa nepotrebnih writeln i readln metoda tako da nije na odmet da kod skratiš recimo putem ispisivanja više stvari u okviru jedne writeln metode. Isto tako nema potrebe da svaki put kad hoćeš da dodaš novu liniju pozivaš newLine() metodu iz System paketa već možeš jednostavno da iskoristiš tzv. escape karaktere koje recimo možeš da vidiš na sledećoj stranici (http://java.sun.com/docs/books/tutorial/java/data/characters.html - skroluj dole)

irreal
24.1.2010, 3:07
Btw mislim da bi ti isto ovako radila for petlja i u Javi, samo i++ zamenis sa i = i +1

da, zato sto je samo C++ toliko napredan i ispred svog vremena da podrzava taj nacin inkrementiranja :)

a zapravo tuzna istina je da je VB jedan od jako rektih koji ih ne podrzava. (pricamo o VB6)

doctor
24.1.2010, 23:28
^^How should I know that? :) U Javi ne radim (a sa Cpp sam tek poceo) pa sam rekao coveku ono sto znam.

Eto (ako ne kontam pogresno), sad znam da i Java podrzava ++ inkrementaciju.

marosh
25.1.2010, 14:34
Hvala puno na svim odgovorima ali ima jedan problem...Kad koristim ovu pretlju for....problem je u tome sto kad me pita drugi put(3.,4.,5...) upisuje rezultate u isti txt file i onda obrise ono iz proslog upisivanja...ne znam kako da namestim da mi upisuje u drugi txt file ili barem da nebrise ono iz starog... :nov_mad2:I imam jos 1 pitanje...Kako da namestim da kad popunim sve sto pita u prvom kodu da se program ugasi al pri ponovnom pokretanju preskoci prvi i idma krene na sledeci kod(kodovi se svi samo ponavljaju)...:)

doctor
25.1.2010, 21:05
Eh, pa na pocetku petlje konvertujes integer -i- u neki string (npr ime varijable StringI) onda npr saberes stringove "ime", StringI i " ".txt" i cuvace se u razlicitih 16 fajlova rezultati ;)

ime0.txt
ime1.txt
ime2.txt

itd.


Pokusaj da shvatis kako sve to radi ;)

irreal
25.1.2010, 22:37
@ marosh

izvini, ali ne uci se tako programiranje.
tebi je neko pokazao kako da ubacis petlju i ti su tu lupio copy i paste, i sada kada ne radi kako bi zeleo, pojma nemas ni zasto ne radi ni kako da popravis.

MORAS da krenes od nekih osnova, ako mislis da razumes sta radis.
a ako zelis da ti mi tako iz 10 pokusaja sastavimo program, a da ti pojma nemas sta se tu dogadja, onda je to sasvim druga stvar.

marosh
26.1.2010, 0:48
Hvala ponovo..Resio sam problem ovako:
for(int r=1; r < 16;r++)

a txt file namestio da se zove "kolo"+r+"txt

doctor
26.1.2010, 0:57
Verujem da mislis "kolo" + r +".txt" ;)

Pitanje za one koji znaju: u Javi postoji operator+ koji dozvoljava "klasicno" sabiranje stringova kao ovo:

"abc" + "abc" + nekiString


? :D

Bar se u Cpp to zove operator, valjda ih ima i u Javi, sta znam pitam, pocela Java da mi deluje primamljivo za razvoj aplikacija :D

holodoc
26.1.2010, 1:20
Verujem da mislis "kolo" + r +".txt" ;)

Pitanje za one koji znaju: u Javi postoji operator+ koji dozvoljava "klasicno" sabiranje stringova kao ovo:

"abc" + "abc" + nekiString


? :D

Bar se u Cpp to zove operator, valjda ih ima i u Javi, sta znam pitam, pocela Java da mi deluje primamljivo za razvoj aplikacija :D"Klasično sabiranje stringova" se stručno zove konkatenacija (concatenation) i može da se radi na nekoliko načina uključujući i "+" operator ali se generalno "+" izbegava zato što je gledano po performansama najgora moguća varijanta spajanja dva stringa.

Da ne bih radio čisto prepisivanje pogledaj koje su boljealternative za spajanje stringova: http://www.ibm.com/developerworks/websphere/library/bestpractices/string_concatenation.html

irreal
26.1.2010, 1:49
naravno, to ne znaci da ako samo na jednom mestu spajas dva stringa i nista vise, da je pogresno da jednostavno odradis prvi + drugi i cao.
nema potrebe uvoditi stringbuffer za jednu,dve, nekoliko operacija.

medjtuim cim pocne da raste broj, stringbuffer postaje isplativije resenje.
isto vazi za C# i StringBuilder