Hallo,
ich hab mal eine Frage.
Und zwar, kann ich diese Klasse auch ohne Arreys und For-Schleifen hinbekommen?!
Sprich nur mit if,else,do,while.
Hier die Klasse:
Wäre klasse wenn es noch andere Möglichkeiten geben würde.
ich hab mal eine Frage.
Und zwar, kann ich diese Klasse auch ohne Arreys und For-Schleifen hinbekommen?!
Sprich nur mit if,else,do,while.
Hier die Klasse:
Code:
import java.io.IOException;
import java.util.Arrays;
/**
* [b]Klasse:[/b] GeldautomatenTest
* Ein neue Geheimzahl (PIN) wird erstellt, die dann auf Sicherheit getestet wird.
* @author Nicolai Ulbrich
* Datum: 07.06.2005
*/
public class GeldAutomat
{
/** Speichert die Ziffern der Geheimzahl.*/
private int geheimZahl [] = new int[4] ; // "= new int[4]" oder "= {1,1,1,1};
/**
* Erzeugt einen neuen Geldautomaten-Test.
* @throws IOException
*/
public GeldAutomat() throws IOException
{
erzeugeGeheimZahl();
}
/**
* Liefert die Geheimzahl.
* @throws IOException
* @return geheimZahl
*/
public int[] liefereGeheimZahl() throws IOException
{
return geheimZahl;
}
/**
* Testet die Sicherheit der Geheimzahl und liefert den Durchschnitt der eingezogenen Chipkarten.
* @throws IOException
* @return durchschnittEingezogenerKarten
* @param anzahlDurchlaeufe
*/
public int testGeheimzahl(int anzahlDurchlaeufe) throws IOException
{
int alleEingezogenenKarten = 0;
if (anzahlDurchlaeufe <= 0 || anzahlDurchlaeufe > 100000 )
{
anzahlDurchlaeufe = 1;
}
else
{
MeinRandom zahl = new MeinRandom();
int eingezogeneKarten = 0;
int[] testPin = new int[4];
for(int testAnzahl = anzahlDurchlaeufe; testAnzahl >=1; testAnzahl--)
{
eingezogeneKarten = 0;
boolean testPinGleichGeheimZahl = false;
do
{
for (int versuch = 3; versuch >=1; versuch--) // führt die überprüfung 3 mal durch
{
for (int stelle = 0; stelle <= 3; stelle++) // erstellt neuen testPin
{
testPin[stelle] = zahl.nextInt(1,9);
}
//testPinGleichGeheimZahl = ( testPin[0] == geheimZahl[0] && testPin[1] == geheimZahl[1] && testPin[2] == geheimZahl[2] && testPin[3] == geheimZahl[3] );
testPinGleichGeheimZahl = Arrays.equals(testPin, geheimZahl);
if ( testPinGleichGeheimZahl )
{
eingezogeneKarten--;
versuch = 0;
erzeugeGeheimZahl();
}
}
eingezogeneKarten++;
} while ( !testPinGleichGeheimZahl );
alleEingezogenenKarten += eingezogeneKarten ;
}
}
int durchschnittEingezogenerKarten = alleEingezogenenKarten / anzahlDurchlaeufe ;
return durchschnittEingezogenerKarten;
}
/**
* Erzeugt eine neue Geheimzahl.
* @throws IOException
*/
private void erzeugeGeheimZahl() throws IOException
{
MeinRandom zahl = new MeinRandom();
for (int stelle = 0; stelle <= 3; stelle++)
{
geheimZahl[stelle] = zahl.nextInt(1,9);
}
}
}
Wäre klasse wenn es noch andere Möglichkeiten geben würde.