gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Hash, poredjenja, null polja i komentari
[spa2-materijali.git] / Hash / Gadjanje.java
1 import org.svetovid.io.SvetovidReader;
3 /**
4 * Gadjanje mete
5 *
6 * Prosiruje InfoTip samo zbog jednostavnosti u TestHash, nema razloga inace.
7 */
8 public class Gadjanje extends InfoTip {
9 private int[] rezultati;
10 private static int MAX_DUZ = 20;
12 public Gadjanje(String linija) {
13 String[] delovi = linija.replaceAll(" ", " ").split(" ");
14 if (delovi.length > 0) {
15 try {
16 int br = Integer.parseInt(delovi[0]);
17 rezultati = new int[br];
18 for (int i = 0; i < br; i++) {
19 rezultati[i] = Integer.parseInt(delovi[i + 1]);
20 }
21 } catch (Exception ex) {
22 throw new RuntimeException(ex);
23 }
24 } else
25 throw new RuntimeException("Pogresan broj argumenata u redu");
26 }
28 public Gadjanje() {
29 // prazan konstruktor potreban za test program
30 }
32 public boolean equals(Object o) {
33 // Objekat je identican
34 if (this == o) {
35 return true;
36 }
37 // Null je uvek razlicit
38 if (o == null) {
39 return false;
40 }
41 // Ako su klase razlicite, objekti ne mogu bili jednaki
42 if (getClass() != o.getClass()) {
43 return false;
44 }
46 Gadjanje o2 = (Gadjanje) o;
47 // proveravamo da li je polje null pre dalje provere
48 if (rezultati != null && o2.rezultati != null) {
49 if (o2.rezultati.length == rezultati.length) {
50 for (int i = 0; i < rezultati.length; i++) {
51 if (o2.rezultati[i] != rezultati[i]){
52 // cim je nesto razlicito nisu isti
53 return false;
54 }
55 }
56 // ako se sve vrednosti slazu isti su
57 return true;
58 }
59 return false;
60 } else {
61 // vracamo da li su oba null, tj da li su jednaki
62 return (rezultati == null && o2.rezultati == null);
63 }
64 }
66 @Override
67 public int hashCode() {
68 int rez = 0;
69 for (int i = 0; i < rezultati.length; i++) {
70 rez = (rez + rezultati[i] * (MAX_DUZ + 1 - i)) * 7;
71 }
72 return rez;
73 }
75 @Override
76 public InfoTip ucitaj(SvetovidReader r) {
77 Gadjanje rez = new Gadjanje();
78 int br = r.readInt();
79 rez.rezultati = new int[br];
80 for (int i = 0; i < br; i++) {
81 rez.rezultati[i] = r.readInt();
82 }
83 return rez;
84 }
86 public String toString() {
87 String str = "Gadjanje (" + rezultati.length + "):";
88 for (int i : rezultati) {
89 str += " " + i;
90 }
91 return str;
92 }
94 }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner