Made the interactive binary entropy reader more forgiving for a better UX

master
B.J. Dweck 2021-03-14 10:14:19 +02:00
parent dc6179dcd0
commit 4fd4bb407b
1 changed files with 22 additions and 6 deletions

View File

@ -12,15 +12,31 @@ public class InteractiveBinaryEntropyGenerator extends InteractiveEntropyGenerat
@Override
protected String readNextEventSetString() {
String eventSetString = "";
Pattern eventSetPattern = Pattern.compile(String.format("[0-1]{%d}", eventsPerEventSet));
StringBuilder eventSetBuffer = new StringBuilder();
int remainingEvents = eventsPerEventSet;
Pattern eventSetPattern = Pattern.compile("[01]+");
while (!eventSetPattern.matcher(eventSetString).matches()) {
System.out.print("Input 33 coin tosses [0-1]: ");
eventSetString = inputScanner.next();
while (remainingEvents > 0) {
System.out.printf("Input %d coin tosses [0-1]: ", remainingEvents);
String nextInput = inputScanner.next();
if (!eventSetPattern.matcher(nextInput).matches()) {
System.out.printf(
"Invalid input! Enter %d-digit sequence of 1's and 0's (for example, 1011101010)" + System.lineSeparator(),
remainingEvents);
continue;
}
eventSetBuffer.append(nextInput);
remainingEvents -= nextInput.length();
}
return eventSetString;
if (remainingEvents < 0)
System.out.printf("NOTE: Discarding the %d extra coin toss(es) entered" + System.lineSeparator(), -remainingEvents);
return eventSetBuffer.substring(0, eventsPerEventSet);
}
@Override