java
-
axxis
Addict
- Príspevky: 3690
- Registrovaný: 29 máj 2007, 21:53
- Bydlisko: Spálené mlyny
- Kontaktovať používateľa:
Re: java
no je to jednoduche
na nacitanie z textoveho suboru pouzi triedu Scanner (je to jednoduchsie ako dekorovanie inputStreamu do BufferedReadru)
Scanner vytvoris ako
na citanie pouzijes metodu scanneru sc.nextLine a riadok mozes rozparsovat pomocou metody split.
(ta medzera v ztvorke znemena zank, cez ktory sa bude splitovat, vsetky udaje v tomto poli budu ulozene ako string, cize to cislo na konci bude potrebne neskor este pretypovat)
teraz Ti uz staci vytvorit triedu Cd
trieda PonukaCd bude obsahovat premennu typu ArrayList parametrizovanu typom Cd
do toho potom mozes v cykle ukladat jednotlive instancie Cd
metoda na vypis vsetkeho najlepsie spravis cez forEach cyklus
metoda vloz Cd bude asi musiet prejst celym zoznamom a zistit si ci sa tam uz Cd s rovnakym klucom nenachadza
metoda vymazCd bued opat prechadzat celym ArrayListom, ak sa tam pozadovane nachadza zmazes ho ak nie, vypises, ze take v ponuke nie je. Ked som ja robil nieco podobne riesil som to hadzanim vynimiek (v ArrayListe som mal nasimulovany obsah suborov a ked chcel niekto vymazat subor, ktory neexistuje hodilo mu to NoSuchFileException)
edit:// pridavam aj nejake zdorjaky, 100% funkcnostou si nie som isty, lebo som to netestoval. asi budes musiet poopravovat nejake chyby
edit2:// hups, vsetky metody som dal omylom private, opraveny zdrojak v prilohe
na nacitanie z textoveho suboru pouzi triedu Scanner (je to jednoduchsie ako dekorovanie inputStreamu do BufferedReadru)
Scanner vytvoris ako
Kód: Vybrať všetko
File f = new File ("cesta/subor.txt");
Scanner sc = new Scanner (f)Kód: Vybrať všetko
String [] pomocnePole = Scanner.nextLine.split(" ")teraz Ti uz staci vytvorit triedu Cd
Kód: Vybrať všetko
public class Cd
{
private String nazov;
private String autor;
private Sting kod;
private int cena;
public Cd (String n, String a, String k, int c)
{
nazov = n;
autor = a;
kod = k;
cena = c;
}
public String toString()
{
return (nazov+autor+kod+cena);
}
}Kód: Vybrať všetko
List<Cd> lst = new ArrayList<Cd>();Kód: Vybrať všetko
while(!sc.hasNext())
{
lst.add(new Cd(tu das polozky pomoconehoPola))
}Kód: Vybrať všetko
for (Cd pomCd:lst)
{
System.out.println(pomCd.toString);
}Kód: Vybrať všetko
public vlozCd(String kluc)
{
Boolean ret = false;
for(Cd pomCd : lst)
{
if (kluc.equals(pomCd.gedKod))
{
ret = true;
break;
}
}
if (ret)
{
/*tu aktualizujes hodnoty pomocou settrov
}
else
{
lst.add(new Cd(parametre));
}
}
edit:// pridavam aj nejake zdorjaky, 100% funkcnostou si nie som isty, lebo som to netestoval. asi budes musiet poopravovat nejake chyby
edit2:// hups, vsetky metody som dal omylom private, opraveny zdrojak v prilohe
- Prílohy
-
- hojko.rar
- (4.6 KiB) 24 stiahnutí
-
axxis
Addict
- Príspevky: 3690
- Registrovaný: 29 máj 2007, 21:53
- Bydlisko: Spálené mlyny
- Kontaktovať používateľa:
Re: java
este teraz ma napadlo, to moje parsovanie jednotlivych riadkov asi nebude uplne spravne. Vychadzal som z predpokladu, ze to budu 4 slova co asi nebude tak uplne pravda. Jednotlive polozky mozu obsahovat viac slov a potom to uz nebude fungovat. Jednotlive veci asi musis ziskat pomocou metody String.subString(zaciatocnyIndex, konecnyIndex)
takze si zavolas Scanner na dalsiu lajnu, ktoru ulozis do premennej a tu potom zmenis asi takto:
takze si zavolas Scanner na dalsiu lajnu, ktoru ulozis do premennej a tu potom zmenis asi takto:
Kód: Vybrať všetko
String udaj = sc.nextLine();
pole[0] = udaj.substring(0,4);
pole[1] = udaj.substring(4,45);
pole[2] = udaj.substring(45,85);
pole[3] = udaj.substring (85, udaj.length());-
mirak2
Hardcore addict
- Príspevky: 6719
- Registrovaný: 18 sep 2005, 13:44
- Bydlisko: Prague, CZE / Kosice, SVK
Re: java
pouzivat ako oddelovac v subore medzeru je trochu ehm ehm...logickejsi je tab alebo |...no ale to je zadanie...btw ten split funguje rovnako alebo iba podobne ako delimiter?
ono pouzivas tam take finty co ona je zaciatocnik nemusi im rozumiet (foreach) a vyucujuci to moze povazovat za ulohu vypracovanu niekym inym...
kaciva: ked nevies nieco ako funguje a co nieco vlastne je, kludne sa pytaj
ono pouzivas tam take finty co ona je zaciatocnik nemusi im rozumiet (foreach) a vyucujuci to moze povazovat za ulohu vypracovanu niekym inym...
kaciva: ked nevies nieco ako funguje a co nieco vlastne je, kludne sa pytaj
-
axxis
Addict
- Príspevky: 3690
- Registrovaný: 29 máj 2007, 21:53
- Bydlisko: Spálené mlyny
- Kontaktovať používateľa:
Re: java
uff, ty vole ja som to mal na prvykrat dobre a s tymi substringami som sa odrbal...nabuduce musim lepsie citat. som si pri druhom citani myslel, ze to bude jeden dlhy string, ktoreho prve 4 znaky su kod, dalsich 40 a 40 su autor a nazov a te nzvysok cenamirak2 napísal:pouzivat ako oddelovac v subore medzeru je trochu ehm ehm...logickejsi je tab alebo |...no ale to je zadanie...btw ten split funguje rovnako alebo iba podobne ako delimiter?
ono pouzivas tam take finty co ona je zaciatocnik nemusi im rozumiet (foreach) a vyucujuci to moze povazovat za ulohu vypracovanu niekym inym...
kaciva: ked nevies nieco ako funguje a co nieco vlastne je, kludne sa pytaj
co sa tyka toho delimiteru tak Ti nepoviem, lebo som nic take jakziv nepouzil (alebo o tom aspon neviem), split funguje podobne ako StringTokenizer avsak ten Ti vrati z toho stringu iterator zatial co split to rozdeli do pola
-
mirak2
Hardcore addict
- Príspevky: 6719
- Registrovaný: 18 sep 2005, 13:44
- Bydlisko: Prague, CZE / Kosice, SVK
Re: java
na prvy krat si to mal dobre ale si predstav ze v nazve cd by boli medzery a urobilo by to sarapatu pri splitovani...pri substringoch len treba upravit zaciatok a konec substringu o tie medzery..ci?
-
axxis
Addict
- Príspevky: 3690
- Registrovaný: 29 máj 2007, 21:53
- Bydlisko: Spálené mlyny
- Kontaktovať používateľa:
Re: java
alebo takmirak2 napísal:na prvy krat si to mal dobre ale si predstav ze v nazve cd by boli medzery a urobilo by to sarapatu pri splitovani...pri substringoch len treba upravit zaciatok a konec substringu o tie medzery..ci?