From 7ee7d6610ad21031b9be17414b8df90aa318521c Mon Sep 17 00:00:00 2001 From: kozhanov Date: Fri, 7 Dec 2018 16:26:21 +0400 Subject: [PATCH 1/4] + --- .idea/misc.xml | 2 +- src/flashcards/Main.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) 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..3323d0c 100644 --- a/src/flashcards/Main.java +++ b/src/flashcards/Main.java @@ -1,7 +1,11 @@ package flashcards; +import java.io.BufferedReader; +import java.io.InputStreamReader; + public class Main { public static void main(String[] args) { - System.out.print("Hello world!"); + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + System.out.print("Input the number of cards:"); } } \ No newline at end of file From 31cd8ad3950962a811ae630d7447f3b19a509947 Mon Sep 17 00:00:00 2001 From: kozhanov Date: Fri, 7 Dec 2018 16:35:52 +0400 Subject: [PATCH 2/4] + --- src/flashcards/Main.java | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/flashcards/Main.java b/src/flashcards/Main.java index 3323d0c..6b032e8 100644 --- a/src/flashcards/Main.java +++ b/src/flashcards/Main.java @@ -1,11 +1,28 @@ package flashcards; import java.io.BufferedReader; +import java.io.IOException; import java.io.InputStreamReader; public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - System.out.print("Input the number of cards:"); + System.out.println("Input the number of cards:"); + int cardcount = Integer.parseInt(br.readLine()); + String[] cards = new String[cardcount]; + String[] definitions = new String[cardcount]; + for (int i = 0; i < cardcount; i++) { + System.out.println("The card #"+(i+1)+":"); + cards[i] = br.readLine(); + System.out.println("The definition of the card #"+(i+1)+":"); + definitions[i] = br.readLine(); + } + + for (int i = 0; i < cards.length; i++) { + System.out.println("Print the definition of \""+cards[i]+"\":"); + if (definitions[i].equals(br.readLine())) + System.out.println("Correct answer."); + else System.out.println("Wrong answer (the correct one is \""+definitions[i]+"\")."); + } } } \ No newline at end of file From 73bd1560f9a5715564d92573c67b971b1ea5c58b Mon Sep 17 00:00:00 2001 From: kozhanov Date: Fri, 7 Dec 2018 16:48:42 +0400 Subject: [PATCH 3/4] HashMaps --- src/flashcards/Main.java | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/flashcards/Main.java b/src/flashcards/Main.java index 6b032e8..c6c5550 100644 --- a/src/flashcards/Main.java +++ b/src/flashcards/Main.java @@ -3,26 +3,33 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.Map; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Input the number of cards:"); int cardcount = Integer.parseInt(br.readLine()); - String[] cards = new String[cardcount]; - String[] definitions = new String[cardcount]; + Map cardToDefinition = new HashMap<>(); + Map definitionToCard = new HashMap<>(); for (int i = 0; i < cardcount; i++) { System.out.println("The card #"+(i+1)+":"); - cards[i] = br.readLine(); + String card = br.readLine(); System.out.println("The definition of the card #"+(i+1)+":"); - definitions[i] = br.readLine(); + String def = br.readLine(); + cardToDefinition.put(card,def); + definitionToCard.put(def,card); } - for (int i = 0; i < cards.length; i++) { - System.out.println("Print the definition of \""+cards[i]+"\":"); - if (definitions[i].equals(br.readLine())) - System.out.println("Correct answer."); - else System.out.println("Wrong answer (the correct one is \""+definitions[i]+"\")."); + for (Map.Entry entry : cardToDefinition.entrySet()) { + System.out.println("Print the definition of \""+entry.getKey()+"\":"); + String answer = br.readLine(); + if (entry.getValue().equals(answer)) System.out.println("Correct answer."); + else + System.out.println("Wrong answer (the correct one is \""+entry.getValue()+"\""+(definitionToCard.containsKey(answer)? + ", you've just written a definition of \""+definitionToCard.get(answer) +"\" card).": ").")); } + } } \ No newline at end of file From 5f881b34797044e13fa33cf9d403a54965d3699f Mon Sep 17 00:00:00 2001 From: kozhanov Date: Mon, 10 Dec 2018 09:14:47 +0400 Subject: [PATCH 4/4] HashMaps+files --- src/flashcards/Main.java | 111 +++++++++++++++++++++++++++++++-------- 1 file changed, 89 insertions(+), 22 deletions(-) diff --git a/src/flashcards/Main.java b/src/flashcards/Main.java index c6c5550..6cda9cb 100644 --- a/src/flashcards/Main.java +++ b/src/flashcards/Main.java @@ -1,35 +1,102 @@ package flashcards; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; +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) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - System.out.println("Input the number of cards:"); - int cardcount = Integer.parseInt(br.readLine()); + boolean exit = false; Map cardToDefinition = new HashMap<>(); Map definitionToCard = new HashMap<>(); - for (int i = 0; i < cardcount; i++) { - System.out.println("The card #"+(i+1)+":"); - String card = br.readLine(); - System.out.println("The definition of the card #"+(i+1)+":"); - String def = br.readLine(); - cardToDefinition.put(card,def); - definitionToCard.put(def,card); + 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(); } - - for (Map.Entry entry : cardToDefinition.entrySet()) { - System.out.println("Print the definition of \""+entry.getKey()+"\":"); - String answer = br.readLine(); - if (entry.getValue().equals(answer)) System.out.println("Correct answer."); - else - System.out.println("Wrong answer (the correct one is \""+entry.getValue()+"\""+(definitionToCard.containsKey(answer)? - ", you've just written a definition of \""+definitionToCard.get(answer) +"\" card).": ").")); - } - } } \ No newline at end of file