/
Executor.java
103 lines (88 loc) · 3.76 KB
/
Executor.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// Morgan Evans, 1124703, mnevans
public class Executor {
public static void main(String[] args) {
Utility.init(); // initializes file readers
String[] questions = Utility.readQuestions(); //reads question.txt file into questions array
String[] answers = Utility.readAnswers(); // reads answers.txt file into answers array
//finds the number of oracles
int numOracles = answers.length;
ArrayQueue[] oracleArray = new ArrayQueue[numOracles];
ListQueue[] oracleList = new ListQueue[numOracles];
createArray(numOracles, oracleArray);
arrayEnqueue(questions, oracleArray, numOracles);
arrayDequeue(numOracles, oracleArray, answers, questions);
divide();
createList(numOracles, oracleList);
listEnqueue(numOracles, questions, oracleList);
listDequeue(oracleList, numOracles, questions, answers);
}
// Initialize one ArrayQueue per oracle.
public static void createArray(int numOracles, ArrayQueue[] oracleArray) {
for (int i = 0; i < numOracles; i++) {
oracleArray[i] = new ArrayQueue();
}
}
// Put the questions into the queues, assigning each one to the queue of the oracle
// whose number is returned by the random number generator.
public static void arrayEnqueue(String[] questions, ArrayQueue[] oracleArray, int numOracles) {
for (int i = 0; i < questions.length; i++) {
for (int j = 0; j < numOracles; j++) {
if (j == Utility.random(numOracles)) {
String question = questions[i];
oracleArray[j].enqueue(question);
}
}
}
}
// Print each oracle's question and answer it with its unique answer until the array is empty.
public static void arrayDequeue(int numOracles, ArrayQueue[] oracleArray, String[] answers, String[] questions) {
for (int i = 0; i < numOracles; i++) {
if (oracleArray.length > 0) {
for (int j = 0; j < oracleArray[i].getSize(); j++) {
oracleArray[j].dequeue();
System.out.print(questions[j] + " ");
System.out.println(answers[j]);
}
}
}
}
// Divide the previous sets of questions and oracles answers from the following sets.
public static void divide() {
System.out.println();
for (int i = 0; i < 50; i++) {
System.out.print("-");
}
System.out.println();
System.out.println();
}
// Initialize one ListQueue per oracle.
public static void createList(int numOracles, ListQueue[] oracleList) {
for (int i = 0; i < numOracles; i++) {
oracleList[i] = new ListQueue();
}
}
// Put the questions into the lists, assigning each one to the queue of the oracle
// whose number is returned by the random number generator.
public static void listEnqueue(int numOracles, String[] questions, ListQueue[] oracleList) {
for (int i = 0; i < questions.length; i++) {
for (int j = 0; j < numOracles; j++) {
if (j == Utility.random(numOracles)) {
String question = questions[i];
oracleList[j].enqueue(question);
}
}
}
}
// Print each oracle's question and answer it with its unique answer until the list empty.
public static void listDequeue(ListQueue[] oracleList, int numOracles, String[] questions, String[] answers) {
for (int i = 0; i < numOracles; i++) {
if (oracleList.length != 0) {
for (int j = 0; j < oracleList[i].getSize(); j++) {
oracleList[j].dequeue();
System.out.print(questions[j] + " ");
System.out.println(answers[j]);
}
}
}
}
}