Obicno ne voli teme sa zadacima za ispit, ali na tvoju srecu ovaj zadatak sam uradio(nisam uradio do kraja ali mislim da ga mozes lako zavrsiti i ti trebas nesto da uradis :) ) samo iz jednog razloga.
Poste si negdje u temi naveo da ti je lakse nauciti ako je sve nabacano u main metodi, i da je pocetnicima lakse tako da uce. Sa ovom tvojm konstatacijom se u opste ne slazem.
Ukoliko se bavis programiranje (ne mora biti Java) i taj programski jezik je OO onda treba da koristis OO koncepte programiranja jer ces na taj naci napraviti kod koji je razumljiv svima a i samom tebi.
Negdje si nave da si napravio pogresan if uslov. Pronalazak ove greske u jednoj metodi koja ima preko 20 linija je prilicno tesko i na to ces izgubiti dosta vremena. Kod koji pises mora biti razumljiv svima koji ga gledaj, bez obzira na njihov nivo poznavanja nekog programskog jezika (bili oni pocetnici ili profesinalci), uvijek treba da nastojis da napravis razumljiv kod. Iskreno tvoj kod koji si postavio na ovoj temi nisam ni pogleda ni ti sam nastojao da ga analizira. Jedan savjet prilikom programiranja ne moj da pises hakove da bi rjesio problem bolje sjedi i razmisli 10 minuta sta hoces a onda to uradi.
Primjer koji slijedi mislim da je razumljim svima i jednostavan za ispravke:
Code:
package com.fudbal;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Set;
import java.util.TreeSet;
/**
* Sadrzi informacije vezane za jedan fudbalski klub.
*
* Ova klas implementira Serializable interfejs samo iza jednog razloga:
* Ukoliko je klasa Serialzable to znaci da ja kao programer nemoram da relizujem kod za citanje i pisanje klase!!!!!
* Nije bitno da li je izvor Mreza, Baza podataka ili Datoteka citanje i pisanje se radi na isti nacin!!!
*
* Klasa implementira Comparable intefejs (methoda comperTo) koja omogucava poredjenje dva objekta istog tipa.
* Na ovaj naciun ukoliko koristis TreeSet sadrzaj seta ce biti sortiran!!!
*
* @author igor
*
*/
class Klub implements Serializable, Comparable<Klub> {
/**
* Serial Version Id.
*/
private static final long serialVersionUID = -5700018480672284604L;
// Ime kluba.
private String imeKluba;
// Broj bodova.
private Integer brBodova;
public Klub(String imeKluba, int brBodova) {
this.imeKluba = imeKluba;
this.brBodova = brBodova;
}
public String getImeKluba() {
return imeKluba;
}
public void setImeKluba(String imeKluba) {
this.imeKluba = imeKluba;
}
public Integer getBrBodova() {
return brBodova;
}
public void setBrBodova(Integer brBodova) {
this.brBodova = brBodova;
}
/**
* Metoda za poredjenje dva fudbalska kluba. Poredjenje se vrsi po broj
* bodova ukoliko je broj bodova jednak onda po imenu.
*/
@Override
public int compareTo(Klub klub) {
int cmp = klub.getBrBodova().compareTo(brBodova);
if (cmp == 0) {
return imeKluba.compareTo(klub.getImeKluba());
}
return cmp;
}
@Override
public String toString() {
return imeKluba + ":" + brBodova;
}
}
public class Fudbal {
private static final String FILE_NAME = "tabela.tab";
// Tabela klubova.
private Set<Klub> tabela = new TreeSet<Klub>();
public Set<Klub> getTabela() {
return tabela;
}
/**
* Serial Version Id.
*/
private static final long serialVersionUID = -1947890881104814447L;
/**
* Metoda za provjeru rezultata utakmice i upis bodova klubovima....
*
* @param domacin
* @param gost
* @param domBrGolova
* @param gostBrGolova
*/
private void utakmica(Klub domacin, Klub gost, Integer domBrGolova,
Integer gostBrGolova) {
int cmp = domBrGolova.compareTo(gostBrGolova);
if (cmp == 0) {
domacin.setBrBodova(domacin.getBrBodova() + 1);
gost.setBrBodova(gost.getBrBodova() + 1);
} else if (cmp > 1) {
domacin.setBrBodova(domacin.getBrBodova() + 3);
} else {
gost.setBrBodova(gost.getBrBodova() + 3);
}
}
/**
* Metoda za prikazivanje tabele.
*/
private void prikaziTabelu() {
System.out.println("Ime Kluba : Broj bodova");
System.out.println("------------------------");
for (Klub klub : tabela) {
System.out.println(klub);
}
System.out.println("------------------------");
}
/**
* Snima tabelu u datoteku.
* Obrati paznju jednosatvno snimis tabelu.
* @throws IOException
*/
private void snimi() throws IOException {
FileOutputStream fs = new FileOutputStream(FILE_NAME);
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(tabela);
os.close();
}
/**
* Cita tabelu iz datoteke.
* @throws IOException
* @throws ClassNotFoundException
*/
private void ucitaj() throws IOException, ClassNotFoundException{
FileInputStream fis = new FileInputStream(FILE_NAME);
ObjectInputStream is = new ObjectInputStream(fis);
tabela = (TreeSet<Klub>) is.readObject();
}
private Klub dodajKlub(String imeKluba, int brBodova){
Klub klub = new Klub(imeKluba, brBodova);
tabela.add(klub);
return klub;
}
private void dodajKlub(Klub klub){
tabela.add(klub);
}
/**
* Vraca klub ukoliko postoji ukoliko ne izbacuje Izuzetak!
* @param imeKluba
* @return trazeni klub
*/
private Klub pronadjiKlub(String imeKluba){
for (Klub klub : tabela) {
if (klub.getImeKluba().equalsIgnoreCase(imeKluba)){
return klub;
}
}
throw new IllegalArgumentException("Klub sa imenom:'" + imeKluba + "' ne postoji");
}
/**
* @param args
*/
public static void main(String[] args) {
Fudbal fudbal = new Fudbal();
//Pokusaj da ucitas klubove, ukoliko klubovi ne postoje kreiraj nove.
try{
fudbal.ucitaj();
}catch (Exception e) {
Klub c1 = fudbal.dodajKlub("Klub A", 4);
Klub c2 = fudbal.dodajKlub("Klub B", 0);
fudbal.getTabela().add(c1);
fudbal.getTabela().add(c2);
//Odigraj utakmicu
fudbal.utakmica(c1, c2, 2, 3);
}
fudbal.dodajKlub(new Klub("Klub C", 5));
// Prikazi tabelu.
fudbal.prikaziTabelu();
// Upisi tabelu u datoteku.
try {
fudbal.snimi();
} catch (IOException e) {
System.out.println("Greska prilikom snimanja:" + e.getMessage());
}
}
}
Sve sto treba ti da uradis je da izmjenis malo main metodu tako da mozes da dodajes ekipu, odigras utakmicu i sl.
Mislim da ti to nece biti tesko.
Ovaj post je dobronamjeran bez namjere da te uvrijedi ili naljuti na bilo koji naci ovo ti je cisto savjet kako to da uradis na malo lijepsi nacin bilo da koristis Javu, C, C#, Delphi, VB.NET ili bilo koji drugi OO.
Naravno da se i ovo moze jos dotjerati i ispraviti da bude jos bolje, ali prilicno je kasno i nema vremena da detaljusem.
Pozdrav