这是我在大学的一个项目,一切似乎都很好,除了游戏课,它初始化了游戏。下面是一个片段
public class Game{
private Player player;
private World world;
private ArrayList<NonPlayableFighter> weakFoes;
private ArrayList<NonPlayableFighter> strongFoes;
private ArrayList<Attack> attacks;
private ArrayList<Dragon> dragons;
public Game() throws IOException{
player = new Player("");
world = new World();
weakFoes = new ArrayList<NonPlayableFighter>();
strongFoes = new ArrayList<NonPlayableFighter>();
attacks = new ArrayList<Attack>();
dragons = new ArrayList<Dragon>();
loadAttacks ("Database-Attacks_20309.csv");
loadFoes ("Database-Foes_20311.csv");
loadDragons ("Database-Dragons_20310.csv");
}
之后是一些getter和我要实现的4个方法。这些方法是LoadCSV(String filePath)
、LoadAttacks(String filePath)
、LoadFoes(String filePath)
、LoadDragons(String filePath)
我创建了LoadCSV(String filePath)
,以便它在此处返回String[]的数组列表:
private ArrayList<String[]> loadCSV(String filePath) throws IOException{
String currentLine = "";
ArrayList<String[]> result = new ArrayList<String[]>();
FileReader fileReader = new FileReader(filePath);
BufferedReader br = new BufferedReader(fileReader);
currentLine = br.readLine();
while (currentLine != null){
String[] split = currentLine.split(",");
result.add(split);
}
br.close();
return result;
}
然后,我想加载一些攻击、敌人和龙,并将它们插入相应的数组列表中。
我在此处应用了LoadAttacks(String filePath)
:
private void loadAttacks(String filePath) throws IOException{
ArrayList<String[]> allAttacks = loadCSV(filePath);
for(int i = 0; i < allAttacks.size(); i++){
String[] current = allAttacks.get(i);
Attack temp = null;
switch(current[0]){
case "SA": temp = new SuperAttack(current[1],
Integer.parseInt(current[2]));
break;
case "UA": temp = new UltimateAttack(current[1],
Integer.parseInt(current[2]));
break;
case "MC": temp = new MaximumCharge();
break;
case "SS": temp = new SuperSaiyan();
break;
}
attacks.add(temp);
}
}
我这样写它,它接受从loadCSV(String filePath)
返回的ArrayList,并使用开关在ArrayList中的每个String[]中搜索第一个字符串,从而创建适当的攻击并将其添加到攻击中。
然后我想为敌人读取另一个CSV,CSV文件的结构是这样的,在第一行中有一些属性,第二行有一些类型为超级攻击的攻击,第三行有一些类型为终极攻击的攻击。此外,在每个foe中都有一个布尔属性来确定它是强的还是弱的foe,从而将它放在正确的数组列表中。下面是loadfoes(String filePath)
的代码:
private void loadFoes(String filePath) throws IOException{
ArrayList<String[]> allFoes = loadCSV(filePath);
for(int i = 0; i < allFoes.size(); i += 3){
String[] current = allFoes.get(i);
String[] supers = allFoes.get(i+1);
String[] ultimates = allFoes.get(i+2);
ArrayList<SuperAttack> superAttacks = new ArrayList<SuperAttack>();
ArrayList<UltimateAttack> ultimateAttacks = new ArrayList<UltimateAttack>();
NonPlayableFighter temp = null;
for(int j = 0; i < supers.length; j++){
int index = attacks.indexOf(supers[j]);
if(index != -1){
superAttacks.add((SuperAttack)attacks.get(index));
}
else break;
}
for(int j = 0; i < ultimates.length; j++){
int index = attacks.indexOf(ultimates[j]);
if(index != -1){
ultimateAttacks.add((UltimateAttack)attacks.get(index));
}
else break;
}
if(current[7].equalsIgnoreCase("True")){
temp = new NonPlayableFighter(current[0], Integer.parseInt(current[1]),
Integer.parseInt(current[2]), Integer.parseInt(current[3]),
Integer.parseInt(current[4]), Integer.parseInt(current[5]),
Integer.parseInt(current[6]), true, superAttacks, ultimateAttacks);
strongFoes.add(temp);
}
else{
temp = new NonPlayableFighter(current[0], Integer.parseInt(current[1]),
Integer.parseInt(current[2]), Integer.parseInt(current[3]),
Integer.parseInt(current[4]), Integer.parseInt(current[5]),
Integer.parseInt(current[6]), false, superAttacks, ultimateAttacks);
weakFoes.add(temp);
}
}
}
首先,我获得从loadCSV(String FilePath
返回的ArrayList中的前三个String[],并进行了两次循环,以检查攻击是否在先前加载的攻击CSV中,然后检查确定其是强还是弱的属性,并相应地创建一个新的NonplayableFighter
并将其添加到相应的列表中。
运行此赋值的jUnit4测试时,会给出一个编译错误:未处理的异常类型IOException。一般来说,代码有什么值得注意的问题吗?
如果不是您任务的一部分,那么最好重用已经存在的用于Java的CSV文件读取器(例如CVSReader)。
问题内容: 我正在开发一个概念验证应用程序,以便可以在我正在开发的更大的应用程序中实现该功能。我对Java和Android Dev有点陌生,但希望这个问题不会太简单或太复杂。 基本上,我正在尝试从CSV文件中读取字符串列表,并使其可用于在应用程序的主活动中显示该列表。 我正在使用外部类来读取CSV文件。这是课程代码: CSVFile.java 这是我的主要活动代码: MainActivity.ja
我想从多列csv文件中读取特定列,并使用Java在其他csv文件中打印这些列。需要帮忙吗?下面是我逐行打印每个令牌的代码。。但我希望只打印多列csv中的几列。
我是R的新手,想读一个csv文件。但是当我试图阅读它时,我遇到了错误。我的csv文件如下: 当我在RStudio中使用此命令时,我得到了错误:命令: 错误: 读取时出错。表(file=file,header=header,sep=sep,quote=quote,:不允许重复的“row.names” 我还尝试删除错误并使用此命令: 但是当我查看输出时,它不能保持方阵的结构。你能帮我做什么吗?
看起来有点讽刺,但当我读2GB的时候。csv文件逐行使用BufferedReader,耗时约4.5秒。我用大约230MB的gzip压缩了文件。我使用了用BufferedReader包装的GZIPInputStream来读取。gz文件。大约用了8.5秒。 我知道InputStream接口读取的是字节数据,而不是读卡器,但我认为如果一个200MB的文件加载到内存会更快。是否可以使用实现更好的性能。gz
问题内容: [编辑] 我使用 D3 解决了这个问题,不用了,谢谢! 所以我有一个看起来像这样的csv文件,我需要将本地csv文件导入到我的客户端javascript中: 我最终需要解析它并输出如下内容: 但就目前而言,我仍然只是将其导入javascript。 我当前的代码如下所示: 我已经研究并找到了一些关于的有用链接,但是我是javascript的新手,我并不完全了解它。我应该使用Ajax吗?F
问题内容: 我有一个CSV文件,下面是其外观示例: 我知道如何读取文件并打印每列(例如- )。但是我真正想做的是读取行,就像这样,然后依此类推。 然后,我想将这些数字存储到变量中,以便稍后将它们总计(例如): 。那我可以做。 我将如何在Python 3中做到这一点? 问题答案: 您可以执行以下操作: 要么 : 编辑: