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
char[] merkit = new char[length];
boolean[] tunnettu = new boolean[length];
// alustetaan taulukoiden arvot
for (int i = 0; i < length; i++) {
merkit[i] = 0; // tätä ei välttämättä tarvitse, pitäisi olla nollia
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 < ArvausJono.length; i++) {
if (loytyy(mjono[i]) = false)
jono[i] = jono[i] + "_";
else
jono[i] = jono[i] + merkit;
}
return jono;
}
}