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