Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.85 KB | None | 0 0
  1. package flashcards;
  2. import javax.print.DocFlavor;
  3. import javax.swing.plaf.IconUIResource;
  4. import java.io.*;
  5. import java.util.*;
  6.  
  7. class Card{
  8.     private String front;
  9.     private String back;
  10.     Card(String front,String back){
  11.         this.back=back;
  12.         this.front=front;
  13.     }
  14.     public void setFront(String front){
  15.         this.front=front;
  16.     }
  17.     public void setBack(String back){
  18.         this.back=back;
  19.     }
  20.     public String getFront(){
  21.         return front;
  22.     }
  23.     public String getBack(){
  24.         return back;
  25.     }
  26. }
  27. class Deck{
  28.     private Set<Card> cards=new TreeSet<>();
  29.     public void addNewCardFromUser(){
  30.         Scanner scanner=new Scanner(System.in);
  31.         System.out.println("The card");
  32.         System.out.println(cards.size());
  33.         String front=scanner.nextLine();
  34.         for(Card card:cards) {
  35.  
  36.         if(front.equals(card.getFront())){
  37.             System.out.println("The card \""+front+"\" already exists.");
  38.             scanner.close();
  39.             return;
  40.         }
  41.         }
  42.         System.out.println("The definition of the card");
  43.         String back=scanner.nextLine();
  44.         for(Card card:cards) {
  45.             if(back.equals(card.getBack())){
  46.                 System.out.println("The definition \""+back+"\" already exists.");
  47.                 scanner.close();
  48.                 return;
  49.             }
  50.         addNewCard(front,back);
  51.         scanner.close();
  52.     }
  53.  
  54. }
  55.     private void addNewCard(String front,String back){
  56.         Card card=new Card(front,back);
  57.         this.cards.add(card);
  58.     }
  59.     public void importCardsFromFile(){
  60.         Scanner scanner=new Scanner(System.in);
  61.         System.out.println("File name:");
  62.         String fileName=scanner.nextLine();
  63.         File file = new File(fileName);
  64.         int counter=0;
  65.         try (Scanner fileScanner = new Scanner(file)) {
  66.             while (fileScanner.hasNextLine()) {
  67.                 String front = scanner.nextLine();
  68.                 String back = scanner.nextLine();
  69.                 addNewCard(front,back);
  70.                 counter++;
  71.             }
  72.         } catch (FileNotFoundException e) {
  73.             System.out.println("No file found: " + fileName);
  74.             scanner.close();
  75.             return;
  76.         }
  77.         System.out.println(counter+" card"+(counter>1?"s":"")+" have been loaded.");
  78.         scanner.close();
  79.         return;
  80.     }
  81.     public void removeCard(){
  82.     Scanner scanner=new Scanner(System.in);
  83.     System.out.println("The card:");
  84.     String cardToRemove=scanner.nextLine();
  85.     for(Card card:cards) {
  86.     if(card.getFront().equals(cardToRemove)){
  87.         cards.remove(card);
  88.         System.out.println("The card has been removed.");
  89.         scanner.close();
  90.         return;
  91.     }
  92.     }
  93.         System.out.println("Can't remove \""+cardToRemove+"\": there is no such card.");
  94.         scanner.close();
  95.         return;
  96.     }
  97.     private void askRandomQuestion(){
  98.         Scanner scanner=new Scanner(System.in);
  99.         Card currentCard=randomCard();
  100.         System.out.println("Print the definition of \""+currentCard.getFront()+"\":");
  101.         String answer=scanner.nextLine();
  102.         if(answer.equals(currentCard.getBack())){
  103.             System.out.printf("Correct answer");
  104.         }
  105.         else{
  106.             System.out.print("Wrong answer. The correct one is \""+currentCard.getBack()+"\"");
  107.             for (Card card:cards){
  108.                 if(card.getBack().equals(answer)){
  109.                     System.out.println(", you've just written the definition of \""+card.getFront()+"\".");
  110.                     scanner.close();
  111.                     return;
  112.                 }
  113.             }
  114.             System.out.println(".");
  115.         }
  116.         scanner.close();
  117.         return;
  118.  
  119.     }
  120.     private Card randomCard(){
  121.         int size = cards.size();
  122.         int item = new Random().nextInt(size);
  123.         int i = 0;
  124.         for(Card card:cards)
  125.         {
  126.             if (i == item)
  127.                 return card;
  128.             i++;
  129.         }
  130.         return new Card("X","d");
  131.     }
  132.     public void startTest(){
  133.         Scanner scanner=new Scanner(System.in);
  134.         System.out.println("How many times to ask?");
  135.         int numberOfQuestions=scanner.nextInt();
  136.         for(int i=0;i<numberOfQuestions;i++){
  137.             this.askRandomQuestion();
  138.         }
  139.     }
  140.     public void exportDeck(){
  141.         Scanner scanner=new Scanner(System.in);
  142.         System.out.println("File name:");
  143.         String fileName=scanner.nextLine();
  144.         File file = new File(fileName);
  145.         int counter=0;
  146.         try (PrintWriter writer = new PrintWriter(file)) {
  147.             for(Card card:cards){
  148.                 writer.println(card.getFront());
  149.                 writer.println(card.getBack());
  150.                 counter++;
  151.             }
  152.         } catch (IOException e) {
  153.             System.out.printf("An exception occurs %s", e.getMessage());
  154.             scanner.close();
  155.             return;
  156.         }
  157.         System.out.println(counter+(counter>1?" cards":" card")+" have been saved.");
  158.         scanner.close();
  159.         return;
  160.     }
  161. }
  162. public class Main {
  163.     public static void main(String[] args) {
  164.         Scanner scanner=new Scanner(System.in);
  165.         Deck deck=new Deck();
  166.         boolean app=true;
  167.         String decision;
  168.         while(app){
  169.         System.out.println("Input the action (add, remove, import, export, ask, exit):");
  170.         decision=scanner.nextLine();
  171.         switch (decision){
  172.             case "add":deck.addNewCardFromUser();break;
  173.             case "remove": deck.removeCard();break;
  174.             case "import": deck.importCardsFromFile();break;
  175.             case "export": deck.exportDeck();break;
  176.             case "ask": deck.startTest();break;
  177.             case "exit": app=false;break;
  178.         }
  179.  
  180.     }
  181.         System.out.println("Bye bye!");
  182.  
  183.     }
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement