package main.solver;
import java.util.ArrayList;
;
/**
*
* Klasse IntSolver überprüft die Benutzereingabe mit dem korrekten Ergebnis und
* vergleicht ob sie übereinstimmen und vergibt dementsprechend Punkte. Für
* ganzzahlige Ergebnisse geeignet.
*
*/
public class IntSolver extends Solver {
private ArrayList<Character> resultArray;
private ArrayList<Character> userInputArray;
private ArrayList<Boolean> solve;
/**
* Konstruktor der Klasse Solver
*/
public IntSolver() {
resultArray = new ArrayList<Character>(); // ArrayList für die einzelnen
// Zeichen des korrekten
// Ergebnisses
userInputArray = new ArrayList<Character>(); // ArrayList für die
// einzelnen Zeichen der
// Benutzereingabe
solve = new ArrayList<Boolean>();
}
/**
* Methode überprüft 2 Strings und gibt die dafür auszugebenden Punkte
* zurück.
*
* @return points
*/
@Override
public int solve(String result, String userInput) {
setStringToArray(result, userInput);
compare(resultArray, userInputArray);
int points = getPoints(solve);
return points;
}
/**
* Methode zerlegt Strings in einzelne Arrays.
*
* @param result
* @param userInput
*/
private void setStringToArray(String result, String userInput) {
for (int i = 0; i < resultArray.size(); i++) {
resultArray.add(result.charAt(i));
userInputArray.add(userInput.charAt(i));
}
}
/**
* Methode überprüft Stelle für Stelle ob das Ergebnis richtig ist und
* schreibt alles in eine bool ArrayList.
*
* @param resultArray
* - Array des richtigen Ergebnisses
* @param userInputArray
* - Array der Usereingabe
*/
private void compare(ArrayList<Character> resultArray,
ArrayList<Character> userInputArray) {
for (int i = 0; i < userInputArray.size(); i++) {
if (resultArray.get(i).equals(userInputArray.get(i))) {
solve.set(i, true);
} else {
solve.set(i, false);
}
}
}
/**
* Methode rrechnet die zuvergebenden Punkte.
*
* @param solveArray
* @return 1 - Ergebnis richtig
* @return 0 - Ergebnis falsch
*/
private int getPoints(ArrayList<Boolean> solveArray) {
int point = 0;
for (int i = 0; i < solveArray.size(); i++) {
if (solveArray.get(i).equals(true)) {
point++;
} else {
}
}
if (point == resultArray.size()) {
return 1;
} else {
return 0;
}
}
/**
* Methode soll die UseInputs kicken, die Buchstaben enthalten
* @param userInput
*/
private void kickLetters(String userInput){
for (int i = 0; i < userInputArray.size(); i++) {
// und wie kann ich hier isLetter genau umsetzten?
}
}
}