Ich bereitete ein Projekt vor, das von Trivia Crack inspiriert ist.Kann einen Wert von HashMap löschen, der zufällig ausgewählt wird
SporHmap ist eine HashMap, die 3 Werte (Fragen) speichert. In der actionListener-Methode erhält das Programm einen zufälligen Schlüssel aus der Hashmap und gibt Fragen und Antworten auf die JLabels und JButtons der QuestionClass aus.
Das Problem hier ist, ich möchte nicht, dass die Fragen wiederholt werden. Wenn eine Frage angezeigt wurde, sollte sie nicht erneut angezeigt werden. Ich benutzte tl.SporHmap.remove (randomValue); nachdem ein Wert ausgewählt wurde, aber es hat nichts geändert.
TriviaLinked tl = new TriviaLinked();
tl.SporHmap.put("Basketbolda 3 adımdan fazla atılan adıma ne denir?","Steps");
tl.SporHmap.put("Hindistan'ın ulusal sporu nedir?","Kriket");
tl.SporHmap.put("Süper Lig'de hakeme kırmızı kart gösteren futbolcu kimdir?","Salih Dursun");
Spor.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
QuestionClass q = new QuestionClass();
q.getQFrame();
Object[] values = tl.SporHmap.values().toArray();
String randomValue = (String)values[r.nextInt(values.length)];
if(tl.SporHmap.get("Hindistan'ın ulusal sporu nedir?").equals(randomValue)){
q.label.setText("Hindistan'ın ulusal sporu nedir?");
q.answer1.setText("Kriket");
q.answer2.setText("Beyzbol");
q.answer3.setText("Hokey");
q.answer4.setText("Futbol");
tl.SporHmap.remove(randomValue);
q.answer1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "True Answer");
score.setText("Score: "+scr++);
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
}
else if(tl.SporHmap.get("Basketbolda 3 adımdan fazla atılan adıma ne denir?").equals(randomValue)){
q.label.setText("Basketbolda 3 adımdan fazla atılan adıma ne denir?");
q.answer1.setText("Serbest atış");
q.answer2.setText("Dışarı çıkış");
q.answer3.setText("Steps");
q.answer4.setText("Faul");
tl.SporHmap.remove(randomValue);
q.answer3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "True Answer");
score.setText("Score: "+scr++);
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
}
else if(tl.SporHmap.get("Süper Lig'de hakeme kırmızı kart gösteren futbolcu kimdir?").equals(randomValue)){
q.label.setText("Süper Lig'de hakeme kırmızı kart gösteren futbolcu kimdir?");
q.answer1.setText("Erkan Zengin");
q.answer2.setText("Özer Hurmacı");
q.answer3.setText("Salih Dursun");
q.answer4.setText("Aykut Demir");
tl.SporHmap.remove(randomValue);
q.answer3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "True Answer");
score.setText("Score: "+scr++);
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
}
}
});
Hier ist meine QuestionClass Klasse:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class QuestionClass {
public JLabel label,label1;
public JFrame questionFrame;
public JButton answer1,answer2,answer3,answer4;
public QuestionClass() {
questionFrame = new JFrame();
questionFrame.setDefaultCloseOperation(questionFrame.HIDE_ON_CLOSE);
questionFrame.setLayout(new GridLayout(3,2));
questionFrame.setSize(700, 350);
questionFrame.setVisible(true);
questionFrame.setLocationRelativeTo(null);
label = new JLabel("");
questionFrame.add(label);
label1 = new JLabel("");
questionFrame.add(label1);
answer1 = new JButton("");
questionFrame.add(answer1);
answer2 = new JButton("");
questionFrame.add(answer2);
answer3 = new JButton("");
questionFrame.add(answer3);
answer4 = new JButton("");
questionFrame.add(answer4);
}
public JFrame getQFrame() {
return questionFrame;
}
}
Ich nehme das als "Problem gelöst". Danke für die schnelle Annahme!Also, was war das Problem? – GhostCat
Ich änderte ** tl.SporHmap.remove (randomValue); ** mit ** tl.SporHmap.remove ("Hindistan'ın ülusal sporu nedir?"); ** und es funktionierte. Es scheint nicht so logisch, aber es gibt noch kein Problem. Außerdem muss ich alle ** remove (randomValue) ** Teile mit ** remove (....) ** ändern. – afellay
Das ist ... seltsam. Aber was auch immer. Schön, dass Sie eine Lösung gefunden haben. – GhostCat