Java | Vokabelprogramm

Hallo :)

Ich muss ein Vokabeltrainer programmieren, den ich anfangs für leichter gehalten habe als sich am Ende rausgestellt hat :rolleyes:. Er soll ganz simpel sein. Undzwar habe ich 2x Textfields, im Oberem wird die Vokabel eingelesen und im unterem wird die Übersetzung vom User eingegeben. Eine Logik soll dann die beiden vergleichen. Ich mache das mit 2x Listen, eine für Deutsch eine für Englisch. Die Logik habe ich erstmal in ein Programm geschrieben ohne GUI da man ja, wie mir gesagt wurde, die Logik nicht in die Actionperformed reinschreiben soll sondern in eine extra Klasse und ich erstmal testen wollte ob es funktioniert. Soweit so gut.

Code:
import java.util.*;

public class VokabelListe {

    public static void main(String args[])
    {
    	Scanner in = new Scanner(System.in);
    	int i=0;
		int y=0;
		int v=-1;
    	List<String> vD = new ArrayList<String>();
    	List<String> vE = new ArrayList<String>();
    	vD.add("Haus");
    	vD.add("Tür");
    	vD.add("Dach");
    	vE.add("house");
    	vE.add("door");
    	vE.add("roof");
    	do
		{
			System.out.println("Deutsch: "+vD.get(v+1));
			System.out.print("Ihre Antwort: ");
			String lv = in.next();
			if(lv.equals(vE.get(v+1))) 
			{
				System.out.println("Richtig!");
			}
			else
			{
				System.out.println("Falsch!");
				y++;
			}
			v++;
			i++;
			System.out.println("Beantwortet: "+i+" Davon falsch: "+y);
		}while(i<vD.size());
    }
    
    
}

Jetzt habe ich keinen Plan wie ich das Ganze mit Vererbung (set und get Methoden) so schreiben kann dass ich in meinem Programm mit der Oberfläche darauf zugreifen kann. Daher habe ich trotzdem mal versucht die Logik darein zu packen. Was nicht wirklich funktioniert, ich nehme an die Laufvariable wird nicht um 1 erhöht und die schleife führt dazu dass sich das Programm aufhängt :( .

Code:
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.List;
import java.util.*;

public class VokabelLernhilfe extends Frame
{
	public Label lblUebersetzen = new Label("Übersetzen von: ");
	public Choice chcSprache = new Choice();
	public Button btnStart= new Button("START");
	public Button btnRF = new Button("Eingabe");
	public TextField tfSprache1= new TextField(40);
	public TextField tfSprache2= new TextField(40);
	public Label lblRF = new Label("Warten auf Eingabe");
	public Label lblTime = new Label("Zeit: ");
	public Label lblAnswers = new Label("Bisher beantwortet: ");
	public Label lblWrong = new Label("Davon falsch: ");
	private BorderLayout borderLayout = new BorderLayout();
	private Panel pnlChoice = new Panel();
	private Panel pnlNorth = new Panel(new GridLayout(1,2));
	private Panel pnlSouth = new Panel(new GridLayout(1,3));
	private Panel pnlEast = new Panel(new GridLayout(2,1));
	private Panel pnlWest = new Panel(new GridLayout(2,1));
	private Panel pnlCenter = new Panel(new GridLayout(2,1));
	private Panel pnlCenterZeile1 = new Panel (new FlowLayout(FlowLayout.LEFT,30,30));
	private Panel pnlCenterZeile2 = new Panel (new FlowLayout(FlowLayout.LEFT,30,30));
    public VokabelLernhilfe()
    {
    	super("Vokabeltrainer");
    	this.chcSprache.add("Deutsch -> Englisch");
    	this.chcSprache.add("Englisch -> Deutsch");
    	this.pnlChoice.add(this.lblUebersetzen);
    	this.pnlChoice.add(this.chcSprache);
    	this.pnlNorth.add(this.pnlChoice);
    	this.pnlNorth.add(this.btnStart);
    	this.pnlEast.add(this.btnRF);
    	this.pnlEast.add(this.lblRF);
    	this.pnlCenterZeile1.add(this.tfSprache1);
    	this.pnlCenterZeile2.add(this.tfSprache2);
    	this.pnlCenter.add(this.pnlCenterZeile1);
    	this.pnlCenter.add(this.pnlCenterZeile2);
    	this.pnlSouth.add(this.lblTime);
    	this.pnlSouth.add(this.lblAnswers);
    	this.pnlSouth.add(this.lblWrong);
    	this.add(this.pnlNorth,BorderLayout.NORTH);
    	this.add(this.pnlSouth,BorderLayout.SOUTH);
    	this.add(this.pnlCenter,BorderLayout.CENTER);
    	this.add(this.pnlEast,BorderLayout.EAST);
    	this.add(this.pnlWest,BorderLayout.WEST);
    	this.setBackground(Color.orange);
		this.setSize(550,350);
		this.setVisible(true);
		this.btnRF.addActionListener(new MyActionListener());
		this.btnStart.addActionListener(new MyActionListener());
		this.addWindowListener(new MyWindowListener());
    }
    public static void main(String args[])
	{
		new VokabelLernhilfe();
	}
    public class MyActionListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			Scanner in = new Scanner(System.in);
   		 	int i=0;
  			int y=0;
			int v=-1;
    		List<String> vD = new ArrayList<String>();
    		List<String> vE = new ArrayList<String>();
   			vD.add("Haus");
    		vD.add("Tür");
    		vD.add("Dach");
    		vE.add("house");
    		vE.add("door");
    		vE.add("roof");
    	if(VokabelLernhilfe.this.btnStart==e.getSource()&&VokabelLernhilfe.this.chcSprache.getSelectedIndex()==0)
    	{	
    		do
			{
    			VokabelLernhilfe.this.tfSprache1.setText(vD.get((v+1)));
				String lv = in.next();
				if(lv.equals(vE.get(v+1))) 
				{
					VokabelLernhilfe.this.lblRF.setText("Richtig!");
				}
				else
				{
					VokabelLernhilfe.this.lblRF.setText("Falsch"+", Antwort: "+vE.get(v+1));
					y++;
				}
				v++;
				i++;
				VokabelLernhilfe.this.lblAnswers.setText("Bisher beantwortet: "+i);
				VokabelLernhilfe.this.lblWrong.setText("Davon falsch: "+y);
			}while(i<vD.size());
    	}
			
			
    		
			
    }
				
	}
}

Wäre echt cool wenn sich jemand mal kurz damit auseinander setzen könnte den ich komme nicht weiter und muss es am Mo. presentieren, es macht noch gut was von meinem Abitur aus.
 
Hallo Deepy, da du den Scanner auf die Standardeingabe gesetzt hast, hängt sich das Programm mitnichten auf, sondern wartet auf eine Eingabe, in dem Fall vom Terminal. Wenn Du dort etwas eingibst, läuft das Programm auch weiter. Cheers, Ray
 
Zurück
Oben