public class ArvausJono {
private char[] merkit;
private boolean[] tunnettu;
public ArvausJono(String mjono) {
// otetaan talteen merkkijonon pituus (merkkien määrä)
int length = mjono.length();
// tehdään tyhjät taulukot merkkijonon pituisiksi
this.merkit = new char[length];
this.tunnettu = new boolean[length];
// alustetaan taulukoiden arvot
for (int i = 0; i < length; i++) {
merkit[i] = mjono.charAt(i); // alustetaan merkit-taulukko mjonon kirjaimilla
tunnettu[i] = false; // periaatteessa myös boolean on false ilman alustusta, mutta selkeämpää alustaa kaikki taulukota, niin tietää ainakin mitä niissä on
}
}
public boolean loytyy(char kirjain) {
int i;
boolean loytyy = false;
if (this.merkit.length > 0) {
for (i = 0; i < this.merkit.length; i++) {
if (kirjain == this.merkit[i] && this.tunnettu[i] == false) {
this.merkit[i] = kirjain;
this.tunnettu[i] = true;
// ei lopeteta (return) vielä tässä, vaan merkataan loytyy-muuttujaan, että kirjaimia on löytynyt, jotta kaikki voidaan merkata
loytyy = true;
}
// Tässä ei saa olla else-lohkoa, eikä pidä palata, vaan koko merkkijono pitää käydä läpi aina
}
}
return loytyy;
}
public boolean kaikkiLoydetty() {
boolean kaikki;
int i;
// Tässä oli enemmänkin häikkää
// Ideana on käydä kaikki kirjaimet läpi
// ja palauttaa false heti kun yksikin kirjain on löytämättä eli tunnettu[i] == false
// Jos falseja ei löydy, kaikki on löydetty ja voidaan palauttaa true
for (i = 0; i < this.merkit.length; i++) {
if (this.tunnettu[i] == false) {
return false; // loppuja ei tarvitse testata, kun kaikkia ei jokatapauksessa ole nyt löydetty
}
}
return true; // Yhtään falsea ei ollut, kaikki löydetty
}
public String toString() {
String jono = "";
for (int i = 0; i < this.tunnettu.length; i++) {
if (this.tunnettu[i] == false)
jono = jono + "_";
else
jono = jono + merkit[i];
}
return jono;
}
}