Doppelte Einträge in eine List

programmierer12

Bekanntes Mitglied
Hi!
Ich habe ein Problem mit meinem Programm.
Dazu die relevante Codestelle:
Java:
public static void mischen(){
		
		zufall =  (int) (Math.random()*index);
		
	}
	
	public static void fragen(){
		
		mischen();
		tfFrage.setText("");
		tfAntwort.setText("");
		tfFrage.repaint();
		tfAntwort.repaint();
		BufferedReader in;
		try {
			
			in = new BufferedReader(new FileReader(eingeloggt + "_Vokabeln.voc"));
			String zeile = null;
			while ((zeile = in.readLine()) != null) {
				
				list.add(zeile);
				index = list.size();
				mischen();
				listIndex = (String) list.get(zufall);
				splittArray = listIndex.split("\\|");
				tfFrage.setText(splittArray[0].toString());
				
				}
			
		} catch (IOException e1) {
			
			e1.printStackTrace();
			
		}
		
	}
	
	public static void pruefen(){
		
		index = list.size();
		
		do{
			
			if(tfFrage.getText().isEmpty()){
				
				fragen();
				
			}
			
			else{
				
				if(tfAntwort.getText().isEmpty()) JOptionPane.showMessageDialog(null, "Füllen Sie alle Felder aus");
				
				else{
					
					if(tfAntwort.getText().equals(splittArray[1].toString())){
						
						JOptionPane.showMessageDialog(null, "Richtig");
						fragen();
						
					}
					
					else{
						
						JOptionPane.showMessageDialog(null, "Falsch");
						tfAntwort.setText("");
						tfAntwort.repaint();
						
					}
					
				}
				
			}
			
		}while(tfFrage.getText().equals(""));
		
		
	}

Also mein Problem ist, dass jedesmal wenn ich die Methode prüfen aufrufe
und meine eingabe mit dem splittArray[2] übereinstimmt dieser Eintrag aus
der list in der alle Einträge stehen gelöscht wirden soll. Ich habe es wie ihr
auch im Code sehen könnt schon mit
Code:
list.remove(zufall)
probiert, was
aber zu keinem Ergebniss geführt hat.
Im Großen und Ganzen will ich ja eigentlich nur, dass jeder Eintrag aus der
list nur einmal abgefragt wird was ich damit realisieren wollte, dass ich den
betreffenden Eintrag nach der Abfrage einfach lösch. Das hat aber nicht geklappt!;(

Vielen Dank schon mal Voraus
MFG
programmierer12
 
Normalerweise sollte list.remove funktionieren. Du entfernst das Element an der Position und bekommst dieses als Rückgabewert.

Ansonsten wäre eine andere Idee, dass du zwei Listen hast und in die eine packst du erstmal alle Elemente rein, dann fügst du bei jedem Durchlauf das Element aus der einen auch in die andere Liste und prüfst vorher ob das Element schon in der zweiten Liste vorhanden ist. Wenn ja, dann versuchst du dein Glück erneut, bis du ein Element hast, was noch nicht dran war.
 
tut mir leid aber ich habe die zeile vergessen.
Nachdem der Text Richtig ausgegeben wurde kam noch die Zeile
Code:
list.Remove(zufall);
Und dann wird die Methode Fragen aufgerufen.
 
Lies dir doch mal das Javadoc zum List Interface durch.
Die remove(int) Methode gibt das Element zurück, welches an dieser Position in der Liste gespeichert war.

Versuch es erstmal so, den anderen Anstz erklär ich dir morgen. Ich hab den PC nicht mehr an und bin nur mal schnell mit dem Handy hier ins Forum.
 

Zurück
Oben