更新通过类传递的值'参数

时间:2016-05-12 16:39:42

标签: java arrays swing

我的任务是使用JFrames构建调查问卷。我创建了一个类,可以将问号作为参数,并返回问题,答案和指定问题的正确答案。

以下是我的代码的基本概念

int qNum = 1;
QnA questions = new QnA(qNum);
JFrame frame = new JFrame;
JLabel q = new JLabel(QnA.question)//where the .question returns the question determined by qNum.
JRadioButton ans1 = new JRadioButton(QnA.Answers[0])//.Answers[] is the array in which the answers are stored.
JRadioButton ans2 = new JRadioButton(QnA.Answers[1])
//etc
JButton sub = new JButton("Submit");
Jbutton rst = new JButton("Clear");

然后我创建了一个事件处理程序,如果答案正确,它将增加qNum的值。

if(qNum >0 && qNum<20){
   qNum ++;
frame.revalidate();
} else {
    JOptionPane.showMessageDialog(this,"You have the completed the quiz!");
    qNum = 1;
}

我正在尝试更新通过参数传递的问题编号(qNum)。我知道java通过值而不是引用来获取结果,所以我稍后在代码中更新值实际上并没有更新。我想知道是否有办法实际上可以做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:0)

让我做一个免责声明,说我认为你试图解决的问题有更好的设计,最终,改善它会更好。

关于你的问题,基本上你需要做的是创建一个代表计数器的类:

class QuestionsAnswered {
    private int count = 0;

    void increment() {
        count++;
    }

    int currentCount() {
        return count;
    }

    boolean hasAllQuestionsAnswered() {
        return count > 0 && count < 20;
    }
}
QuestionsAnswered questionsAnswered = new QuestionsAnswered();
QnA questions = new QnA(questionsAnswered);

if (questionsAnswered.hasAllQuestionsAnswered()) {
    questionsAnswered.increment();
    frame.revalidate();
}

请注意,一些相关的逻辑,例如问题比较的数量,在我看来应该包含在该类中。

答案 1 :(得分:0)

您可以创建一个类来保存该值,然后更新它。

class SimpleClass{
    int qNum = 1;
}

SimpleClass qClass = new SimpleClass();

然后只需传入对象并更新qNum属性。 (仅供参考,如果您在传递qClass的方法中执行qClass = new SimpleClass();之类的操作,它将创建一个新对象,并且您将丢失对该对象的引用。)