Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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 格式化数组列表_Java_Random_Arraylist_String Comparison - Fatal编程技术网

Java 格式化数组列表

Java 格式化数组列表,java,random,arraylist,string-comparison,Java,Random,Arraylist,String Comparison,我有一个存储在ArrayList中的文件,我不知道如何格式化它,以便某些文本字符串存储在特定的索引中。第一行是分类,第二行是问题,第三行是琐碎问题的答案。我需要这样做,这样我就可以随机挑选问题,然后检查一个琐事游戏的答案。到目前为止,我只知道每个单词都用逗号隔开。从教授那里 “输入文件包含不同类别的问题和答案。对于每个类别,第一行表示类别的名称。这一行后面将有多行。这一行的第一行是问题,第二行是相应的答案。”。 类别之间用一个空行分隔。” 以下是我目前的代码: import java.io.Fi

我有一个存储在ArrayList中的文件,我不知道如何格式化它,以便某些文本字符串存储在特定的索引中。第一行是分类,第二行是问题,第三行是琐碎问题的答案。我需要这样做,这样我就可以随机挑选问题,然后检查一个琐事游戏的答案。到目前为止,我只知道每个单词都用逗号隔开。从教授那里

“输入文件包含不同类别的问题和答案。对于每个类别,第一行表示类别的名称。这一行后面将有多行。这一行的第一行是问题,第二行是相应的答案。”。 类别之间用一个空行分隔。”

以下是我目前的代码:

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.JOptionPane;



public class TriviaGamePlayer {

/**
 * @param args
 */
public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub

    ArrayList<String> triviaQuestion = new ArrayList<String>();

    Scanner infile = new Scanner(new File("trivia.txt"));



    while(infile.hasNext()){

        triviaQuestion.add(infile.next());
}


    System.out.println(triviaQuestion);
}


}
导入java.io.File;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.Scanner;
导入javax.swing.JOptionPane;
公共类琐碎游戏玩家{
/**
*@param args
*/
公共静态void main(字符串[]args)引发IOException{
//TODO自动生成的方法存根
ArrayList triviaQuestion=新的ArrayList();
扫描仪内嵌=新扫描仪(新文件(“trivia.txt”);
while(infle.hasNext()){
triviaQuestion.add(infle.next());
}
System.out.println(繁琐问题);
}
}

从我目前在问题中看到的情况来看,您最好创建自己的
琐碎问题
对象,它看起来像

public class TriviaQuestion
{ 
     public String question;
     public String answer;
     public boolean asked;
     public String category;

     TriviaQuestion (String q, String a, String c)
     {
         question = q;
         answer = a;
         category = c;
     }
 }
然后你有一些选择,但是如果你有这个对象,那么一切都会变得容易一些。我将创建一个
地图
,其中关键是您的类别

然后在读取文件时,还应使用和
infle.nextLine()

  • 读一行(首先我假设是类别)
  • 阅读下面两行(问答)
    • 创建新实例“新建琐碎问题(问题、答案、类别)”
    • 将其添加到数组列表中
    • 重复,直到空白
  • 若下一行为空,将列表添加到映射并循环回(1)
  • 比如:(假设文件格式正确)

    然后,要提问,请获取类别列表,选择一个随机问题,然后将其设置为“已提问”,这样就不会再次出现

    ArrayList<TriviaQuestion> questions = yourMap.get("Science");
    Integer aRandomNumber = 23 //(create a random Number using list size)
    TriviaQuestion questionToAsk = questions.get(aRandomNumber)
    System.out.println(questionToAsk.question)
    questionToAsk.asked = true
    
    ArrayList questions=yourMap.get(“科学”);
    整数aRandomNumber=23/(使用列表大小创建一个随机数)
    TriviaQuestionToask=questions.get(aRandomNumber)
    System.out.println(questionToAsk.question)
    questionToAsk.ask=true
    
    从我目前在问题中看到的情况来看,您最好创建自己的
    琐碎问题
    对象,它看起来像

    public class TriviaQuestion
    { 
         public String question;
         public String answer;
         public boolean asked;
         public String category;
    
         TriviaQuestion (String q, String a, String c)
         {
             question = q;
             answer = a;
             category = c;
         }
     }
    
    然后你有一些选择,但是如果你有这个对象,那么一切都会变得容易一些。我将创建一个
    地图
    ,其中关键是您的类别

    然后在读取文件时,还应使用和
    infle.nextLine()

  • 读一行(首先我假设是类别)
  • 阅读下面两行(问答)
    • 创建新实例“新建琐碎问题(问题、答案、类别)”
    • 将其添加到数组列表中
    • 重复,直到空白
  • 若下一行为空,将列表添加到映射并循环回(1)
  • 比如:(假设文件格式正确)

    然后,要提问,请获取类别列表,选择一个随机问题,然后将其设置为“已提问”,这样就不会再次出现

    ArrayList<TriviaQuestion> questions = yourMap.get("Science");
    Integer aRandomNumber = 23 //(create a random Number using list size)
    TriviaQuestion questionToAsk = questions.get(aRandomNumber)
    System.out.println(questionToAsk.question)
    questionToAsk.asked = true
    
    ArrayList questions=yourMap.get(“科学”);
    整数aRandomNumber=23/(使用列表大小创建一个随机数)
    TriviaQuestionToask=questions.get(aRandomNumber)
    System.out.println(questionToAsk.question)
    questionToAsk.ask=true
    
    我会通过确定需要什么来解决这个问题。您有一个类别(字符串)列表。在每个类别中,都会有一个问题(字符串)和答案(字符串)对的列表。从这里我们已经看到了一些组织数据的“逻辑”方法

    • 问题-字符串
    • 答案-字符串
    • 问题/答案对-编写一个类(现在,让我们将其称为QAPair),其中两个字符串作为字段(一个用于问题,一个用于答案)
    • 类别内的Q/A对列表-ArrayList
    • 类别列表,映射到Q/a对的列表-也许a可以做到这一点。类型为:Map>
    从那里开始解析文件;对于第一行,或者在遇到空行之后,您知道字符串将给出类别名称。可以调用containsKey()检查类别名称是否已经存在;如果它确实获取该类别的Q/A对的ArrayList并继续添加到列表中,则初始化一个新的ArrayList并将其添加到该类别的映射中

    然后你可以读两行。对于您读取的每一对行,初始化一个QAPair对象,然后将其添加到它们所属类别的ArrayList中

    以下是使用地图的示例:

    Map<String, ArrayList<QAPair>> categories = new HashMap<String, ArrayList<QAPair>>();
    if (!categories.containsKey("Math")) { // Check to see if a Math category exists
        categories.put("Math", new ArrayList<QAPair>()); // If it doesn't, create it
    }
    QAPair question1 = new QAPair("2+2", "4");
    // get() method returns the ArrayList for the "Math" category
    // add() method adds the QAPair to the ArrayList for the "Math" category
    categories.get("Math").add(question1);
    

    我将通过确定需要什么来解决这个问题。您有一个类别(字符串)列表。在每个类别中,都会有一个问题(字符串)和答案(字符串)对的列表。从这里我们已经看到了一些组织数据的“逻辑”方法

    • 问题-字符串
    • 答案-字符串
    • 问题/答案对-编写一个类(现在,让我们将其称为QAPair),其中两个字符串作为字段(一个用于问题,一个用于答案)
    • 类别内的Q/A对列表-ArrayList
    • 类别列表,映射到Q/a对的列表-也许a可以做到这一点。类型为:Map>
    从那里开始解析文件;对于第一行,或者在遇到空行之后,您知道字符串将给出类别名称。可以调用containsKey()检查类别名称是否已经存在;如果它确实获取该类别的Q/A对的ArrayList并继续添加到列表中,则在