Takto vypadá zadání:
Při řešení projektu se zaměřte na splnění následujících požadavků:
1. Soustřeďte se na návrh objektového modelu, který bude popisovat proces tahů, evidenci uskutečněných tahů, evidenci odevzdaných tiketů v každém kole a následného zjištění počtů výherců.
2. Předpokládejte, že připravenost osudí k zahájení tahu bude kontrolovat nezávislý dozor. Výběr míčku, který bude tažen, bude určen generátorem pseudonáhodných čísel. Vylosované míčky se do osudí nevrací.
3. V každém kole i za všechna uplynulá kola bude možné zjistit statistiku tahů – která čísla jsou tažena nejčastěji, která vůbec, která nejméně, kolik tiketů vyhrálo 1. pořadí – všechna uhodnutá čísla, kolik 2. pořadí …
4. Projekt musí obsahovat alespoň 3 třídy + minimálně 1 testovací třídu.
To co jsem postnul předtím jsem udělal jako 1 třídu v tom BlueJ. Druhou třídu, mám tu analýzu, pro zjišťování statistik, kolikrát jaké číslo bylo taženo.
To vypadá takto, ale to už mi nefunguje.
public class Analýza extends Sportka
{
/**
* Metoda pro analýzu - zjištění kolikrát bylo jaké číslo taženo.
*/
public void analyza()
{
int[] pomocneMicky = new int[zKolika];
//zpocitej kolikrat bylo ktere cislo tazeno
{
for (int y = 0; y < pocetTahu; y++ )
{
for (int x = 0; x < pocetTazenychCisel; x++)
{
int pomocnecislo = dataProAnalyzu[y][x];
pomocneMicky[pomocnecislo - 1]++;
}
}
}
//najdi 3x maximum a 3x minimum
{
int [] maximum = new int[3]; // pole uchovávající čísla míčků
int [] minimum = new int[3]; // pole uchovávající čísla míčků
for (int y = 0; y < 3; y++)
{
int a0 = 0;
int a1 = 0;
int z0 = pocetTahu + 1;
int z1 = pocetTahu + 1;
for (int x = 0; x < zKolika; x++)
{
int pomocnecislo0 = pomocneMicky[x]; // pomocné číslo 0 = počet vylosování
int pomocnecislo1 = x+1; // pomocné číslo 1 = číslo míčku
if (pomocnecislo0 > a0) //maximum
{
if ((pomocnecislo1 != maximum[0]) && (pomocnecislo1 != maximum[1]) && (pomocnecislo1 != maximum[2]))
{
a0 = pomocneMicky[x];
a1 = x+1;
maximum[y] = a1;
}
}
if (pomocnecislo0 < z0) //minimum
{
if ((pomocnecislo1 != minimum[0]) && (pomocnecislo1 != minimum[1]) && (pomocnecislo1 != minimum[2]))
{
z0 = pomocneMicky[x];
z1 = x+1;
minimum[y] = z1;
}
}
}
}
System.out.println("Nejcasteji tazene micky: " + (maximum [0] ) + "(" + pomocneMicky[(maximum [0]-1)] + "x), " +
(maximum [1] ) + "(" + pomocneMicky[(maximum [1]-1)] + "x), " +
(maximum [2] ) + "(" + pomocneMicky[(maximum [2]-1)] + "x), ");
System.out.println("Nejmene tazene micky: " + (minimum [0] ) + "(" + pomocneMicky[(minimum [0]-1)] + "x), " +
(minimum [1] ) + "(" + pomocneMicky[(minimum [1]-1)] + "x), " +
(minimum [2] ) + "(" + pomocneMicky[(minimum [2]-1)] + "x), ");
System.out.println();
}
}
}
To mi vypíše hlášku:
java.lang.ArrayIndexOutOfBoundsException: -1
A odsud už se nemohu hnout. Nevím jak to upravit a nevím, jak dodělat to, že tam jakoby ten sázející bude zadávat čísla, která budou ve ,,hře'' a aby se to vyhodnocovalo. To nevím, jak do toho zakomponovat. :-(