【发布时间】:2014-05-22 12:49:28
【问题描述】:
这是我的第一个 Stack 问题.. 任何帮助表示赞赏(关于发布风格或给定问题)
所以.. 我在 Java 中并不是真正的“新人”,但有些事情我不知道。
我有一个关于如何存储以下内容的问题: “其中哪个是水果”、“橙色”、“砖”、“老虎”、“(以及某种正确答案的指示)”。
请记住,此类记录不会超过 20 条,所以我会静态而不是动态地手动放入它们
我在考虑使用 2d 数组,但它如何以及将如何工作。我的导师还说 2d 数组将是最好的方法(我认为他期待 2d 数组,即使有更好的方法)......他还说它必须尽可能简单,所以任何花哨的方法必须推迟 Java。
我可以管理 2d 数组部分。但我如何指出正确的答案?某种布尔值是真还是假?
从用户那里收集答案并检查的部分对我来说不是什么大问题。
我想请您就如何处理这项任务提出建议。谢谢!
附言它必须是applet可以处理的东西 编辑: 好的,伙计们..我去了这里的二维数组是代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Arrays;
public class Quiz_applet extends JApplet implements ActionListener {
static int rez = 0;
static int c=0;
static JTextField input = new JTextField(3);
static String[][] data = {//q1 is in field data[0][0]
{"q1", "A1", "A2", "A3", "A"},
{"q2", "A1", "A2", "A3", "B"},
{"q3", "A1", "A2", "A3", "C"},
{"q4", "A1", "A2", "A3", "B"},
{"q5", "A1", "A2", "A3", "C"},
{"q6", "A1", "A2", "A3", "A"},
{"q7", "A1", "A2", "A3", "A"},
{"q8", "A1", "A2", "A3", "B"},
{"q9", "A1", "A2", "A3", "C"},
{"q10", "A1", "A2", "A3", "A"},
{"q11", "A1", "A2", "A3", "A"}
};
public void init() {
ShapeCanvas canvas = new ShapeCanvas();
JButton Button = new JButton("Answer!");
Button.addActionListener(canvas);
input.addActionListener(canvas);
JPanel bottom = new JPanel();
bottom.setLayout(new GridLayout(1,4,3,3));
bottom.add(Button);
bottom.add(input);
getContentPane().setLayout(new BorderLayout(3,3));
getContentPane().add("Center",canvas);
getContentPane().add("South",bottom);
setSize(600,300);
}
static class ShapeCanvas extends JPanel
implements ActionListener {
ShapeCanvas() {
}
public void paintComponent(Graphics g) {
if(c==0){
g.drawString(data[0][0], 50, 100);
g.drawString(data[0][1], 50, 120);
g.drawString(data[0][2], 50, 140);
g.drawString(data[0][3], 50, 160);
}
else if(c!=0){
g.drawString(data[c][0], 50, 100);
g.drawString(data[c][1], 50, 120);
g.drawString(data[c][2], 50, 140);
g.drawString(data[c][3], 50, 160);
//repaint();
}
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}
@Override
public void actionPerformed(ActionEvent evt) {
String command = evt.getActionCommand();
if (command.equals("Answer!"))
{
if(input.getText().equals(data[c][4]))
{
c=+1;
rez=+1;
};
} ;
}
}
点击回答按钮后如何更改问题? 在我的其他项目中,它的工作原理是这样的^。 p.s.2。我知道网格布局有点“奇怪”,但它有效.. :)
【问题讨论】:
-
那么这是一组带有多项选择答案的问题吗?您如何看待
Question对象? -
我会用 Map
来解决这个问题。因为这为您提供了高效的查找。 -
@Icewind 我认为这只是一个例子。我认为这个问题可能比这更笼统。比如下一个可能是“哪个是最大的数字;5、12、43”
-
关于数字......我不确定......我可以用普通字符串通过
-
class与成员string question、string answer和java.util.List<string> dummies怎么样?维护这些类的列表。