嘿,我正在尝试为英语课的圣诞晚会构建测验程序。它具有GUI和所有功能,但在那并不重要。我有三个按钮,每个按钮带有答案A,B或C的标签。
我有一个Button Go,它可以填充数组中的第一个问题。所有其他问题也存储在一个数组中,但每个存储在不同的数组中。它们被命名为frage 1-10。它们包含“问题”三个可能的答案以及一个字符串,该字符串告诉程序哪个是正确的。我需要一个名为nextQuestion的服务,它将下一个数组填充到相应的字段中。我在这项服务方面遇到困难,因为我想不出任何办法。我将在此处发布我的源代码,希望您能对此提供帮助。由于我是德语,所以代码包含多语言部分。如果您正在努力理解,请不要犹豫,我将尽力解释我的代码。
在此先感谢您的支持。

import sum.komponenten.*;
import sum.werkzeuge.*;
import sum.ereignis.*;

public class DasQuiz extends EBAnwendung
{
    // Objekte

private Etikett hatEtikettHeader;

private Knopf hatKnopfAnswerA;

private Knopf hatKnopfExit;

private Knopf hatKnopfAnswerB;

private Knopf hatKnopfAnswerC;

private Zeichenbereich hatZeichenbereichQuestion;

private Etikett hatEtikett2;

private Etikett hatEtikett3;

private Etikett hatEtikett4;

private Etikett hatEtikettTeamOne;

private Etikett hatEtikettTemaTwo;

private Etikett hatEtikettPunkte1;

private Etikett hatEtikettPunkte2;

private Knopf hatKnopfGo;

private String[] frage1 = new String[]{"What is traditionally hidden in a Christmas pudding?", "A Coin", "A Watch", "A pair of dice", "A"};

private String[] frage2 = new String[]{"How many days are there on a traditional advent calendar?", "12", "24", "30", "B"};

private String[] frage3 = new String[]{"____pull Santa's sleigh", "Guniea Pigs", "Cats", "Reindeers", "C"};

private String[] frage4 = new String[]{"According to the song, how many days of Christmas are there?", "11", "12", "13", "B"};

private String[] frage5 = new String[]{"Why do we shorten Christmas to Xmas?", "X is the first letter of the Greek word for Christ", "X looks like a snowflake", "X looks like a star", "A"};

private String[] frage6 = new String[]{"What is the last day of Christmas called?", "Advent", "Twelfth Night", "Boxing Day", "B"};

private String[] frage7 = new String[]{"Are used to make traditional Christingles", "Peaches", "Pears", "Oranges", "C"};

private String[] frage8 = new String[]{"Charles _____ wrote the book A Christmas Carol", "Dahl", "Rowling", "Dickens", "C"};

private String[] frage9 = new String[]{"Which royal couple started off the fashion for Christmas trees in Britain?", "King Henry adn Anne Boleyn", "Queen Victoria adn Prince Albert", "Prince William and kate Middleton", "B"};

private String[] frage10 = new String[]{"Which of these plants is traditionally connected with Christmas?", "Daisy", "Daffodil", "Poinsettia", "C"};

StringBuilder builder = new StringBuilder();


// Attribute
/**
 * Konstruktor
 */
public DasQuiz()
{
    //Initialisierung der Oberklasse
    super(1255, 876);

    hatEtikettHeader = new Etikett(468, 57, 225, 25, "Christmas Quiz LK English by Marc Blaesche");
    // Ausrichtung
    hatEtikettHeader.setzeAusrichtung(Ausrichtung.LINKS);
    hatKnopfAnswerA = new Knopf(289, 472, 100, 25, "Answer A");
    hatKnopfAnswerA.setzeBearbeiterGeklickt("hatSchalterAnswerAGeklickt");
    hatKnopfExit = new Knopf(1078, 810, 100, 25, "Exit");
    hatKnopfExit.setzeBearbeiterGeklickt("hatKnopfExitGeklickt");
    hatKnopfAnswerB = new Knopf(514, 472, 100, 25, "Answer B");
    hatKnopfAnswerB.setzeBearbeiterGeklickt("hatSchalterAnswerBGeklickt");
    hatKnopfGo = new Knopf (514, 397, 100, 25, "GOGO");
    hatKnopfGo.setzeBearbeiterGeklickt("hatKnopfGoGeklickt");
    hatKnopfAnswerC = new Knopf(755, 472, 100, 25, "Answer C");
    hatKnopfAnswerC.setzeBearbeiterGeklickt("hatSchalterAnswerCGeklickt");
    hatZeichenbereichQuestion = new Zeichenbereich(288, 143, 566, 143, "");
    hatEtikett2 = new Etikett(289, 300, 566, 25, "");
    // Ausrichtung
    hatEtikett2.setzeAusrichtung(Ausrichtung.LINKS);
    hatEtikett3 = new Etikett(289, 340, 566, 25, "");
    // Ausrichtung
    hatEtikett3.setzeAusrichtung(Ausrichtung.LINKS);
    hatEtikett4 = new Etikett(289, 380, 566, 25, "");
    // Ausrichtung
    hatEtikett4.setzeAusrichtung(Ausrichtung.LINKS);
    hatEtikettTeamOne = new Etikett(72, 585, 100, 25, "Team One");
    // Ausrichtung
    hatEtikettTeamOne.setzeAusrichtung(Ausrichtung.LINKS);
    hatEtikettTemaTwo = new Etikett(356, 586, 100, 25, "Tema Two");
    // Ausrichtung
    hatEtikettTemaTwo.setzeAusrichtung(Ausrichtung.LINKS);
    hatEtikettPunkte1 = new Etikett(72, 671, 100, 141, "");
    // Ausrichtung
    hatEtikettPunkte1.setzeAusrichtung(Ausrichtung.LINKS);
    hatEtikettPunkte2 = new Etikett(355, 669, 96, 141, "");
    // Ausrichtung
    hatEtikettPunkte2.setzeAusrichtung(Ausrichtung.LINKS);
}


public void hatKnopfAnswerAGeklickt()
{

}

public void hatKnopfExitGeklickt()
{
    System.exit(0);
}


public void hatKnopfAnswerBGeklickt()
{
    //    Schreiben Sie hier den Text ihres Dienstes
}

public void hatKnopfAnswerCGeklickt()
{
    //    Schreiben Sie hier den Text ihres Dienstes
}

    public void hatKnopfGoGeklickt()
{
    hatZeichenbereichQuestion.setzeInhalt(frage1[0]);
    hatEtikett2.setzeInhalt(frage1[1]);
    hatEtikett3.setzeInhalt(frage1[2]);
    hatEtikett4.setzeInhalt(frage1[3]);
}

public void nextQuestion()
{

}


}

最佳答案

阿努帕姆在评论中说的是正确的;我相信最简单/最快的方法是将您的frage数组组合为二维数组,您可以对其进行迭代以获得下一个问题。

private String[][] questions = {frage1, frage2, frage3, frage4, frage5, frage6, frage7}


此外,您的代码需要知道哪个问题是“下一个问题”。有几种方法可以解决此问题,但是由于我们正在处理数组,因此一种方法是保持“索引”值,如下所示:

public class DasQuiz extends EBAnwendung {

    private int currentQuestionIndex = 0;
    ...


然后,您的nextQuestion方法仅使用该值来确定接下来要加载的问题

例如:

public void nextQuestion() {
    String[] currentQuestion = questions[currentQuestionIndex];

    hatZeichenbereichQuestion.setzeInhalt(currentQuestion[0]);
    hatEtikett2.setzeInhalt(currentQuestion[1]);
    hatEtikett3.setzeInhalt(currentQuestion[2]);
    hatEtikett4.setzeInhalt(currentQuestion[3]);

    currentQuestionIndex++; // increment to the next question index
}


另外,您的hatKnopfGoGeklickt方法可以简单地使用nextQuestion,而不是自己做:

public void hatKnopfGoGeklickt() {
    nextQuestion();
}


旁注1:请注意,我没有检查nextQuestion中的任何数组越界问题,因为我不确定您的程序在到达问题末尾时的工作方式(可能很明显,不确定我的德语有点生锈)。

旁注2:如果您创建一个代表问题及其对应答案的类,则可能会发现代码更简洁。

更新资料

关于您在不确定如何上一堂新课的评论中所说的话,这样的事情会很简单:

public class Question { // Frage
    private String questionText;
    private String[] answers;
    private String correctOption;

    public Question(String questionText, String[] answers, String correctOption){
       ...
    }
}

关于java - 带GUI的Java测验,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27366982/

10-10 23:59