diff --git a/.idea/misc.xml b/.idea/misc.xml
index a165cb3..0c4841a 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/src/flashcards/Main.java b/src/flashcards/Main.java
index d1b036c..6cda9cb 100644
--- a/src/flashcards/Main.java
+++ b/src/flashcards/Main.java
@@ -1,7 +1,102 @@
package flashcards;
+import java.io.*;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+import java.util.Scanner;
+
public class Main {
- public static void main(String[] args) {
- System.out.print("Hello world!");
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ boolean exit = false;
+ Map cardToDefinition = new HashMap<>();
+ Map definitionToCard = new HashMap<>();
+ while (!exit)
+ {
+ String card;
+ String def;
+ System.out.println("Input the action (add, remove, import, export, ask, exit):");
+ switch (br.readLine().toLowerCase())
+ {
+ case "add":
+ System.out.println("The card:");
+ card = br.readLine();
+ System.out.println("The definition of the card:");
+ def = br.readLine();
+ cardToDefinition.put(card,def);
+ definitionToCard.put(def,card);
+ break;
+ case "remove":
+ System.out.println("The card:");
+ card = br.readLine();
+ if (cardToDefinition.containsKey(card)&&definitionToCard.containsValue(card))
+ {
+ definitionToCard.remove(cardToDefinition.get(card));
+ cardToDefinition.remove(card);
+ System.out.println("Card \""+card+"\" has been removed.");
+ }
+ else
+ {
+ System.out.println("Can't remove \""+card+"\": there is no such card.");
+ }
+ break;
+ case "import":
+ System.out.println("File name:");
+ try (FileReader fr = new FileReader(br.readLine()))
+ {
+ cardToDefinition.clear();
+ definitionToCard.clear();
+ Scanner s = new Scanner(fr);
+ while (s.hasNextLine())
+ {
+ card = s.nextLine();
+ def = s.nextLine();
+ cardToDefinition.put(card,def);
+ definitionToCard.put(def,card);
+ }
+ }
+ catch (Exception ex)
+ {
+ System.out.println(ex.getMessage());
+ }
+ break;
+ case "export":
+ System.out.println("File name:");
+ try (FileWriter fw = new FileWriter(br.readLine(),false))
+ {
+ for (Map.Entry entry : cardToDefinition.entrySet()) {
+ fw.write(entry.getKey()+"\n");
+ fw.write(entry.getValue()+"\n");
+ }
+ fw.flush();
+ }
+ catch (Exception ex)
+ {
+ System.out.println(ex.getMessage());
+ }
+ break;
+ case "ask":
+ System.out.println("How many times to ask?");
+ int count = Integer.parseInt(br.readLine());
+ for (int i = 0; i < count; i++) {
+ Random rnd = new Random();
+ int n = rnd.nextInt(cardToDefinition.size());
+ Map.Entry cardentry = (Map.Entry)cardToDefinition.entrySet().toArray()[n];
+ System.out.println("Print the definition of \""+cardentry.getKey()+"\":");
+ String answer = br.readLine();
+ if (cardentry.getValue().equals(answer)) System.out.println("Correct answer.");
+ else
+ System.out.println("Wrong answer (the correct one is \""+cardentry.getValue()+"\""+(definitionToCard.containsKey(answer)?
+ ", you've just written a definition of \""+definitionToCard.get(answer) +"\" card).": ")."));
+ }
+ break;
+ case "exit":
+ exit = true;
+ System.out.println("Bye bye!");
+ break;
+ }
+ System.out.println();
+ }
}
}
\ No newline at end of file