Dobry den, snazim se v Jave pochopit napsani a pouziti vnitrni tridy. Mam Tridu SpravceUctu, jejiz kod vypada takto, vsimnete si prosim vnitrni tridy Prubeh.
package Ucet;
public class SpravceUctu {
public final int POCET_UCTU_MAXIMUM=9999999;
private Ucet[] ucty;
public SpravceUctu() {
inicializujSpravceUctu(POCET_UCTU_MAXIMUM);
}
public SpravceUctu(int kapacita) {
inicializujSpravceUctu(kapacita);
}
private boolean inicializujSpravceUctu(int kapacita) {
if(0<kapacita && kapacita < POCET_UCTU_MAXIMUM) {
this.ucty = new Ucet[kapacita];
return true;
} else {
return false;
}
}
public int VytvorUcet(int cisloUctu,String mena,int vklad) {
int i = NajdiVolnyUcet();
int result;
if(i!=-1) { //povedlo-li se najit novy ucet, tak ho s radosti vytvorim
ucty[i] = new Ucet(cisloUctu,mena,vklad);
result = i;
} else {
result = -1;
}
return result;
}
public int VytvorUcet(int cisloUctu,String mena) {
int i = NajdiVolnyUcet();
int result;
if(i!=-1) { //povedlo-li se najit novy ucet, tak ho s radosti vytvorim
ucty[i] = new Ucet(cisloUctu,mena);
result = i;
} else {
result = -1;
}
return result;
}
public int VytvorUcet(int cisloUctu) {
int i = NajdiVolnyUcet();
int result;
if(i!=-1) { //povedlo-li se najit novy ucet, tak ho s radosti vytvorim
ucty[i] = new Ucet(cisloUctu);
result = i;
} else {
result = -1;
}
return result;
}
public int NajdiVolnyUcet() { //indexVolnyUcet(); -p4, s 50/52
/**
* Humorna pasaz...trochu jsem se potrapil,nez mi napadlo,proc to zakomentovany pod tim nechodi..ted uz to vim...
*/
for (int i = 0; i < ucty.length; i++) {
if(ucty[i]==null) {
return i;
}
}
return -1;
}
// for (int i = 0; i <ucty.length; i++) { //z tohohle je treba sa poucit
// if (ucty[i]==null) {
// k = i;
//
// }
// else {
//
// k=-1; //jestli uz banka nema kapacitu na volny ucty, tak vratit -1
// }
// }
// return k;
// }
public int najdiPodleCislaUctu(int cisloUctu) { //ucel jako metoda najdiUcet v prednasce 4, strana 50/52
for (int i = 0; i < ucty.length; i++) {
if(ucty[i]!= null && ucty[i].getCisloUctu()==cisloUctu) {
return i;
}
}
return -1;
}
public void ZrusUcet(int cisloUctu) {
ucty[cisloUctu] = null;
}
public boolean OverUcet(int cisloUctu) {
if(ucty[cisloUctu]!=null) {
return true;
} else {
return false;
}
}
public Ucet dejUcet(int cisloUctu) {
int index = najdiPodleCislaUctu(cisloUctu);
if(index>0) {
return ucty[index];
} else return null;
}
public void VyberZUctu(int cisloUctu, int castka) {
ucty[cisloUctu].vyber(castka);
}
public void VlozNaUcet(int cisloUctu, int castka) {
ucty[cisloUctu].vloz(castka);
}
private class Prubeh {
int pozice=0;
public boolean jePosledni() {
if(pozice==ucty.length -1) {
return true;
} else
return false;
}
public Ucet aktualni() {
return ucty[pozice];
}
void inkrementovat() {
if(pozice<ucty.length) {
pozice++;
}
}
}//konec tridy prubeh
public Prubeh prubeh(SpravceUctu u) {
return u.new Prubeh();
}
}//konec tridy spravce uctu
Dale mam tridu, kde je funkce main:
package system;
import Ucet.SpravceUctu;
public class BankomatRun {
public static void main(String[] args) {
SpravceUctu spravceJedna = new SpravceUctu(5000);
for (int i = 0; i < 20; i++) {
spravceJedna.VytvorUcet(((int)Math.random()+1)*10000, "CZK", ((int)Math.random()+1)*1000);
// System.out.println("Byl vytvoren ucet s cislem: " +spravceJedna.dej + );
}
Prubeh iterator = new spravceJedna.prubeh(); // ----zde se objevi chyba, ze neni schopen najit tridu Prubeh, ani balicek //spravceJedna ...pritom musim vytvaret instanci vnitrni tridy vzdy z konkretni instance vnejsi, nebo ne?
}
}
Muj problem je popsan v komentari na poslednich radcich, nevi si prosimvas nekdo s timto rady?