• Log in or sign up for an account here: https://www.sythe.org/login

[Source]Simple vocab quizzer

SuF

Legend

Pirate
Retired Global Moderator
Joined
Jan 21, 2007
Sythe Gold
1,234
Messages
14,211
<3 n4n0
Discord Verified
Two Factor Authentication User
Community Participant
Spam Forum Participant
Sythe's 10th Anniversary
Sythe Awards 2011 Winner
I made this because I thought it would be cool and it was a nice project to work on shit.


Sample execution:

Enter 1 for Spanish to English; 2 for English to Spanish:
2
to become:
1) probarse (o:ue)
2) maquillarse
3) enojarse
4) ponerse (+adj.)
4
You are right!

Code:
public class Word
{
	private String english;
	private String spanish;
	
	public Word(String english, String spanish)
	{
		this.english = english;
		this.spanish = spanish;
	}
	
	public String getEnglish()
	{
		return english;
	}
	
	public String getSpanish()
	{
		return spanish;
	}
	
}

Code:
import java.util.Collections;
import java.util.LinkedList;

public class Question
{
	private LinkedList<Word> words;
	private int lang;
	private Word ans;
	
	public Question(LinkedList<Word> words, Word ans, int lang)
	{
		this.words = words;
		this.lang = lang;
		this.ans = ans;
		this.words.add(ans);
		Collections.shuffle(this.words);
	}
	
	public void print()
	{
		System.out.println(this.toString());
	}
	
	public Word getAns()
	{
		return ans;
	}
	
	public boolean checkAns(int a)
	{
			return words.get(a - 1).equals(ans);
	}
	
	public String toString()
	{
		String a = "";
		if(lang == 1)
		{
			a = ans.getSpanish() + ":";
			for(int b = 0; b < 4; b++)
			{
				a += "\n" + (b + 1) + ") " + words.get(b).getEnglish();
			}
		}
		else
		{
			a = ans.getEnglish() + ":";
			for(int b = 0; b < 4; b++)
			{
				a += "\n" + (b + 1) + ") " + words.get(b).getSpanish();
			}
		}
		return a;
	}
}

Code:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.InputMismatchException;
import java.util.LinkedList;
import java.util.Scanner;

public class Main
{
	private LinkedList<Word> wordList;
	private LinkedList<Word> unUsedList;
	private int ans;
	private int lang;

	public static void main(String[] args)
	{
		new Main();
	}

	public Main()
	{
		wordList = loadWords("spanish.txt");
		unUsedList = new LinkedList<Word>();
		unUsedList.addAll(wordList);
		lang = getInputInt("Enter 1 for Spanish to English; 2 for English to Spanish:\n");
		loop();
	}

	private void loop()
	{
		while (true)
		{
			while (unUsedList.size() > 0)
			{
				Question a = createQuestion();
				a.print();
				ans = getInputInt("");
				if (a.checkAns(ans))
				{
					System.out.println("You are right!\n");
				}
				else
				{
					if (lang == 1)
					{
						System.out.println("You are wrong!\nThe correct answer is: " + a.getAns().getEnglish());
					}
					else
					{
						System.out.println("You are wrong!\nThe correct answer is: " + a.getAns().getSpanish());
					}
				}
			}
			System.out.println("You have completed all the words.");
			if (getInputString("Would you like to study again? (Y or N)").equalsIgnoreCase("N"))
			{
				break;
			}
			unUsedList.addAll(wordList);
		}
		System.out.println("Thank you for using the program.");
	}

	private Question createQuestion()
	{
		LinkedList<Word> ansList = new LinkedList<Word>();
		ansList.addAll(wordList);
		LinkedList<Word> others = new LinkedList<Word>();
		Word answer = unUsedList.get(random(0, unUsedList.size() - 1));
		unUsedList.remove(answer);
		ansList.remove(answer);
		for (int a = 1; a <= 3; a++)
		{
			Word b = ansList.get(random(0, ansList.size() - 1));
			others.add(b);
			ansList.remove(b);
		}
		return new Question(others, answer, lang);
	}

	private Word randomWord()
	{
		return wordList.get(random(0, wordList.size() - 1));
	}

	private LinkedList<Word> loadWords(String file)
	{
		try
		{
			LinkedList<Word> c = new LinkedList<Word>();
			BufferedReader input = new BufferedReader(new FileReader(file));
			String a;
			while ((a = input.readLine()) != null)
			{
				String[] b = a.split(",");
				c.add(new Word(b[0], b[1]));
			}
			return c;
		}
		catch (IOException e)
		{
			return null;
		}
	}

	private static int random(int min, int max)
	{
		return (int) (Math.random() * (max - min + 1)) + min;
	}

	private String getInputString(String msg)
	{
		Scanner a = new Scanner(System.in);

		while (true)
		{
			try
			{
				System.out.print(msg);
				return a.nextLine();
			}
			catch (InputMismatchException e)
			{
				a.next();
			}
		}

	}

	private int getInputInt(String msg)
	{
		Scanner a = new Scanner(System.in);

		while (true)
		{
			try
			{
				System.out.print(msg);
				return a.nextInt();
			}
			catch (InputMismatchException e)
			{
				a.next();
			}
		}

	}
}

And here is the file of words that it loads....

Code:
to remember,acordarse (o:ue)
to go to bed,acostarse (o:ue)
to shave,afeitarse
to bathe; to take a bath,banarse
to brush,cepillarse
to say goodbye,despedirse (e:i)
to wake up,despertarse (e:ie)
to go to sleep; to fall asleep,dormirse (o:ue)
to shower; to take a shower,ducharse
to get angry,enojarse
to go away; to leave,irse
to wash,lavarse
to get up,leventarse
to be called; to be named,llamarse
to put on makeup,maquillarse
to comb one's hair,peinarse
to put on,ponerse
to become,ponerse (+adj.)
to worry,preocuparse
to try on,probarse (o:ue)
to stay; to remain,quedarse
to take off,quitarse
to dry,secarse
to sit down,sentirse
to get dressed,vestirse
 
<3 n4n0
Discord Verified
Two Factor Authentication User
Community Participant
Spam Forum Participant
Sythe's 10th Anniversary
Sythe Awards 2011 Winner
unUsedList... why not just remove()

Its randomly selected. Not from the front... I could just shuffle the list... But. Meh. Either way works... >_>.
 
Runescape Gamblingrunescape gambling
Back
Top