Simple Usage of Sandbox - HolmesJJ/OOP-FP GitHub Wiki
qaTest.java
import java.util.ArrayList;
import java.util.List;
public class qaTest {
public static void displayResults(List<Boolean> rList) {
int marks = 0;
for (boolean a : rList) {
if (a) {
marks++;
}
}
System.out.printf("You got %d questions correct.%n", marks);
}
public static void main(String[] args) {
List<Boolean> results = new ArrayList<>();
List<QA> questions = new ArrayList<>();
questions.add(new MCQ("What is 1+1?", 'A'));
questions.add(new TFQ("The sky is blue (T/F)", 'T'));
questions.add(new MCQ("Which animal is an elephant?", 'C'));
questions.add(new TFQ("A square is a circle (T/F)", 'F'));
for (QA q : questions) {
Sandbox.make(q)
.map(QA::displayQuestion)
.map(QA::getAnswer)
.consume(results::add);
}
displayResults(results);
}
}
QA.java
import java.util.Scanner;
abstract class QA {
String question;
char correctAnswer;
public QA(String question, char ans) {
this.question = question;
this.correctAnswer = ans;
}
abstract boolean getAnswer();
public QA displayQuestion() {
System.out.println(this.question);
return this;
}
public char getInput() {
Scanner sc = new Scanner(System.in);
System.out.print("=> ");
char result = sc.next().charAt(0);
System.out.println("");
return result;
}
}