java

Programovacie jazyky, rady, poradňa...
kaciva
Amateur
Amateur
Príspevky: 31
Registrovaný: 02 máj 2007, 21:19

java

Príspevok od používateľa kaciva »

kto mi pomoze s javou? som uplny zaciatocnik a neviem jednu ulohu. pre niekoho kto uz robil v jave to bude urcite hracka,,ja nad tym sedim a nic,,pomozte mi niekto prosim

znenie ulohy je v prilohe

uz som dost zufala
Prílohy
uloha.gif
(48.93 KiB) 629 stiahnutí
axxis
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3690
Registrovaný: 29 máj 2007, 21:53
Bydlisko: Spálené mlyny
Kontaktovať používateľa:

Re: java

Príspevok od používateľa axxis »

no je to jednoduche

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)
na citanie pouzijes metodu scanneru sc.nextLine a riadok mozes rozparsovat pomocou metody split.

Kód: Vybrať všetko

String [] pomocnePole = Scanner.nextLine.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

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);
  }
}
trieda PonukaCd bude obsahovat premennu typu ArrayList parametrizovanu typom Cd

Kód: Vybrať všetko

List<Cd> lst = new ArrayList<Cd>();
do toho potom mozes v cykle ukladat jednotlive instancie Cd

Kód: Vybrať všetko

while(!sc.hasNext())
{
  lst.add(new Cd(tu das polozky pomoconehoPola))
}
metoda na vypis vsetkeho najlepsie spravis cez forEach cyklus

Kód: Vybrať všetko

for (Cd pomCd:lst)
{
  System.out.println(pomCd.toString);
}
metoda vloz Cd bude asi musiet prejst celym zoznamom a zistit si ci sa tam uz Cd s rovnakym klucom nenachadza

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));

   }
}
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
Prílohy
hojko.rar
(4.6 KiB) 24 stiahnutí
kaciva
Amateur
Amateur
Príspevky: 31
Registrovaný: 02 máj 2007, 21:19

Re: java

Príspevok od používateľa kaciva »

dik mooooooc,,,mam v tom jasnejsie,,no ako zaciatocnikovi mi je stale par veci nejasnych,,no vikend je dlhy:D
axxis
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3690
Registrovaný: 29 máj 2007, 21:53
Bydlisko: Spálené mlyny
Kontaktovať používateľa:

Re: java

Príspevok od používateľa axxis »

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:

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());
kaciva
Amateur
Amateur
Príspevky: 31
Registrovaný: 02 máj 2007, 21:19

Re: java

Príspevok od používateľa kaciva »

akurat sa na to pozeram a priznam sa, ze dost skaredo:DDD
axxis
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3690
Registrovaný: 29 máj 2007, 21:53
Bydlisko: Spálené mlyny
Kontaktovať používateľa:

Re: java

Príspevok od používateľa axxis »

keby si sem hodila testovacie udaje mozno by som s tym vedel pohnut viac
kaciva
Amateur
Amateur
Príspevky: 31
Registrovaný: 02 máj 2007, 21:19

Re: java

Príspevok od používateľa kaciva »

ziadne testovacie udaje k tomu nemam,,a myslim, ze aj tak si mi dost pomohol,,,viac ako dost:DD
mirak2
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Re: java

Príspevok od používateľa mirak2 »

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
axxis
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3690
Registrovaný: 29 máj 2007, 21:53
Bydlisko: Spálené mlyny
Kontaktovať používateľa:

Re: java

Príspevok od používateľa axxis »

mirak2 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
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 cena :oops: (nabuduce musim citat viac ako len posledny riadok, keby som to mal vytlacene taku hlupost nespravim)

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
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Re: java

Príspevok od používateľa mirak2 »

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
Addict
Používateľov profilový obrázok
Príspevky: 3690
Registrovaný: 29 máj 2007, 21:53
Bydlisko: Spálené mlyny
Kontaktovať používateľa:

Re: java

Príspevok od používateľa axxis »

mirak2 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?
alebo tak :D
Napísať odpoveď