2017-03-11 4 views
-1

Ich habe an Java mit Netbeans gearbeitet, um ein Programm, das Frage (png Bilder) nach dem Zufallsprinzip für etwa 1 min auf dem Bildschirm zeigt. Wenn das Bild auf dem Display blinkt, hat der Benutzer Zeit, seine Antwort auszuwählen (aus 4 Optionen). Mein Code ist:zufälliges Bild zeigt Quiz

public class NewJFrame extends javax.swing.JFrame { 

/** 
* Creates new form NewJFrame 
*/ 
private String[] images = {"a0.jpg","a1.jpg","a2.jpg","a3.jpg","a4.jpg","a5.png","a6.png"}; 
private int rand; 
public NewJFrame() { 
    initComponents(); 
    Timer time = new Timer(); 
    TimerTask image = new TimerTask(){ 
     @Override 
     public void run(){ 
      Random gen = new Random(); 
      rand = gen.nextInt(6); 
      String image = images[rand]; 
      jLabel1.setIcon(new ImageIcon("src\\images\\" + image)); 
      jLabel1.repaint(); 
      System.out.println(rand); 

     } 
    }; 
    time.schedule(image,100,900); 

} 

Alles richtig gemacht, aber folgende Probleme gibt es:

  1. wiederholte Frage,
  2. Wie Antwort auf jede Frage vergeben (so dass ich, wenn die Bedingung verwenden kann)
+0

erstellen 'Question' und eine' Answer' Klasse, und gehen von dort –

+0

Ihre Nutzung des Zufalls Klasse nicht richtig für mich sieht. Es muss ein Klassenmitglied sein, nicht Teil dieser Methode. Wenn Sie verhindern möchten, dass jemand das gleiche Quiz mehr als einmal sieht, müssen Sie den Überblick behalten, was sie gesehen haben. Sie geben keinen Hinweis darauf, wie Benutzer mit Bildern interagieren, um Antworten zu liefern. – duffymo

+0

Willkommen bei Stack Overflow! Es sieht so aus, als ob du nach Hausaufgabenhilfe fragst. Obwohl wir damit keine Probleme haben, beachten Sie bitte diese [dos and don'ts] (http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions)/338845 # 338845) und bearbeiten Sie Ihre Frage entsprechend. (Auch wenn dies keine Hausaufgaben sind, bitte beachten Sie den Hinweis trotzdem.) –

Antwort

0

ich es so tun würde:

Haben sie eine Karte mit der Frage als Schlüssel und die Antwort als Wert. Sie können dies entweder mit einem einfachen Map<String, String> tun oder vielleicht Ihre eigenen Frage-und-Antwort-Objekte konstruieren, je nachdem, was Sie brauchen.

Um zu vermeiden, dieselbe Frage zweimal zu erhalten, entfernen Sie sie einfach aus der Karte, sobald Sie sie dem Benutzer angezeigt haben.

Map<String, String> questions = new HashMap<>(); 

// Constructor where we put all the questions into the Map 
public Main() { 
    questions.put("What's 1 + 1?", "2"); 
    questions.put("What's the meaning of life?", "42"); 
} 

public void printQuestion() { 
    Random random = new Random(); 
    Map.Entry<String, String> question = (Map.Entry<String, String>) questions.entrySet().toArray()[random.nextInt(questions.size())]; 
    System.out.println("Question: " + question.getKey()); 
    System.out.println("Answer: " + question.getValue()); 
    questions.remove(question.getKey()); 
}