Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储多种不同类型数据的Java 2D数组_Java_Arrays_Boolean_2d - Fatal编程技术网

存储多种不同类型数据的Java 2D数组

存储多种不同类型数据的Java 2D数组,java,arrays,boolean,2d,Java,Arrays,Boolean,2d,这是我的第一个问题。。因此,任何帮助(关于发布风格或给定问题)都是非常感谢的 所以。。我对Java不是很“新”,但有些事情我不知道 我有一个关于如何存储以下内容的问题: “以下哪项是水果”、“橘子”、“砖头”、“老虎”、“以及某种正确答案的表示)”。 请记住,这类记录不会超过20条,所以我会将它们静态地手工输入,而不是动态地输入 我在考虑使用2d阵列,但它如何工作以及将如何工作。我的导师还说2d阵列将是最好的方式(我认为他期待2d阵列,即使有更好的方式)。。。他还说,它必须尽可能简单,因此必须阻

这是我的第一个问题。。因此,任何帮助(关于发布风格或给定问题)都是非常感谢的

所以。。我对Java不是很“新”,但有些事情我不知道

我有一个关于如何存储以下内容的问题: “以下哪项是水果”、“橘子”、“砖头”、“老虎”、“以及某种正确答案的表示)”。

请记住,这类记录不会超过20条,所以我会将它们静态地手工输入,而不是动态地输入

我在考虑使用2d阵列,但它如何工作以及将如何工作。我的导师还说2d阵列将是最好的方式(我认为他期待2d阵列,即使有更好的方式)。。。他还说,它必须尽可能简单,因此必须阻止使用Java的任何奇特方式

我可以管理2d阵列部分但是我如何指出正确的答案呢?某种布尔值加上true或false

收集用户的答案并进行检查对我来说不是什么大问题

我想听听你对如何处理这项任务的建议。谢谢大家!

p、 它一定是applet能够处理的 编辑: 好的,伙计们。。我去了2d数组这里是代码:

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.我知道网格布局有点“怪异”,但它可以工作……)

当然,有更好的方法可以做到这一点,比如使用一个可以让你映射“橙色”->true/false的地图

但是,如果必须是二维阵列,则可以执行以下操作:

private final String YES = "Y";
private final String NO = "N";

String[20][2] fruitData = new String[20][2]();

fruitData[0][0] = "Orange";
fruitData[0][1] = YES;

fruitData[1][0] = "Brick";
fruitData[1][1] = NO;

这是一种有意义的东西。这使你能够以一种有意义的方式将问题与答案配对。这不是一个2D数组,但这里没有什么特别的东西。然后可以将这些问题对象存储在1D数组中

public class Question {
    String question;
    List<String> allAnswers=new ArrayList<>();
    String correctAnswer;

    public Question(String question,String correctAnswer, List<String> wrongAnswers) {
        this.question = question;
        this.correctAnswer = correctAnswer;

        allAnswers.addAll( wrongAnswers);

        //add the correct answer somewhere at random (so that when printing the options it isn't always the first one)
        Random rnd=new Random();
        allAnswers.add( rnd.nextInt(wrongAnswers.size()), correctAnswer);

    }

    public boolean isCorrectAnswer(String answer){
        return correctAnswer.equalsIgnoreCase(answer);
    }

    @Override
    public String toString() {
        //string builder would be better but may constitute "fancy"
        String questionAsString= question;

        for(String answer: allAnswers){
            questionAsString=questionAsString+"\n";
            questionAsString=questionAsString+answer;
        }

        return questionAsString;
    }


    public static void main(String[] args){
        List<String> incorrectAnswers=new ArrayList<>();
        incorrectAnswers.add("Brick");
        incorrectAnswers.add("Tiger");

        Question question=new Question("Which of these is a fruit","Orange", incorrectAnswers);

        System.out.println(question);

        System.out.println(); //just putting in a blank line

        System.out.println(question.isCorrectAnswer("Brick"));
        System.out.println(question.isCorrectAnswer("orange"));

    }


}
公开课问题{
字符串问题;
List allAnswers=new ArrayList();
字符串正确答案;
公开问题(字符串问题、字符串正确答案、列出错误答案){
这个问题=问题;
this.correctAnswer=correctAnswer;
allAnswers.addAll(错误答案);
//随机添加正确答案(这样在打印选项时,它并不总是第一个)
随机rnd=新随机();
allAnswers.add(rnd.nextInt(errorAnswers.size()),correctAnswer);
}
公共布尔值isCorrectAnswer(字符串答案){
返回correctAnswer.equalsIgnoreCase(答案);
}
@凌驾
公共字符串toString(){
//字符串生成器会更好,但可能构成“幻想”
字符串questionString=问题;
for(字符串答案:allAnswers){
questionAsString=questionAsString+“\n”;
问题字符串=问题字符串+答案;
}
返回问题字符串;
}
公共静态void main(字符串[]args){
List incorrectAnswers=new ArrayList();
不正确的回答。添加(“砖块”);
不正确的回答。添加(“老虎”);
问题=新问题(“哪一个是水果”、“橙色”,回答不正确);
System.out.println(问题);
System.out.println();//只需输入一个空行
System.out.println(问题.iscorrect答案(“Brick”);
System.out.println(问题.iscorrect答案(“橙色”);
}
}

在二维数组中,可以将最后一列作为正确答案的索引。然后将索引转换为int并检索正确答案:

格式:

问题,选项1,选项2,选项3,正确的索引

样本记录:

以下哪一个是水果、橘子、砖头、老虎、1

“以下哪一项是汽车”、“乌龟”、“大众”、“鼠标”、“2”


在第一条记录中,“1”是“Orange”(正确答案)的数组索引。在第二条记录中,“2”是“大众”的数组索引。

那么这是一组带有多项选择答案的问题吗?你觉得一个
问题
对象怎么样?我会用地图来解决这个问题。因为这给了你高效的查找,我认为这只是一个例子。我认为这个问题可能比这更一般。比如下一个可能是“哪一个是最大的数字;5,12,43”关于数字。。。我不敢肯定。。我可以用普通的字符串来完成一个
成员
字符串问题
字符串答案
java.util.List假人
?保留这些课程的列表。谢谢。。我的笔记本电脑电池电量不足。。我回家后会检查一下。谢谢大家。现在我有点清楚该怎么做了。。我睡着了,也有了同样的想法。。。。我会努力的。。。谢谢你们