我目前正在为一个类项目开发一个原始的蚂蚁与僵尸游戏。我们将阅读一个'horde'文件,其中包含与将要入侵的Zombie相对应的字符和一个表示前一个zombie char的倍数的整数(1-9包含)。我遇到的问题是区分文件字符串中的int和char以及如何根据int创建多个对象。这就是我到目前为止所做的:
public void readHordeFile(String filename){
try {
file = new FileReader(filename);
} catch (FileNotFoundException e) {
System.out.println("File not found " + e.getMessage());
}
buf = new BufferedReader(file);
try {
zombieString = buf.readLine();
for(int i = 0; i < zombieString.length(); i++){
if(zombieString.charAt(i) == 'S'){
horde.add(new ZombieScientist());
}else if(zombieString.charAt(i) == 'Z'){
horde.add(new StandardZombie());
}else if(zombieString.charAt(i) == 'I'){
horde.add(new InfectedZombie());
}else if(zombieString.charAt(i) == 1){
}
}
} catch (IOException e) {
e.getMessage();
}
}
示例文件包含:SZI1
我在考虑对每个数字进行硬编码,但我仍然遇到不知道如何添加同一对象的多个问题的问题。我真的很感激任何帮助。提前谢谢大家。
答案 0 :(得分:0)
你仍然可以像这样检查char格式的整数。
else if(zombieString.charAt(i) == '1'){
}
如果是1,2或3,你可以用这种方式检查它。
如果要添加多个对象,可以创建对象列表并添加到“horde”对象
答案 1 :(得分:0)
要判断字符串中的代码点是否为数字,请使用Character.isDigit方法;要将一部分字符串放入int中,请使用Integer.parseInt方法。
答案 2 :(得分:0)
一些事情;这是未经测试的代码,因此请将其作为更多提示;
您应该首先将僵尸创建分解为自己的方法,因此您的循环看起来像;
zombieString = buf.readLine();
for(int i = 0; i < zombieString.length(); i++){
Character ch = zombieString.charAt(i);
addZombie(horde, ch);
}
然后你可以将最新创建的僵尸保存在状态变量中;
Character previousZombie = ' ';
zombieString = buf.readLine();
for(int i = 0; i < zombieString.length(); i++){
Character ch = zombieString.charAt(i);
previousZombie = ch;
addZombie(horde, ch);
}
...并检查下一个字符是否为数字,如果是,只需添加前一个僵尸的正确数字。
Character previousZombie = ' ';
zombieString = buf.readLine();
for(int i = 0; i < zombieString.length(); i++){
Character ch = zombieString.charAt(i);
if(!Character.isDigit(ch))
{
previousZombie = ch;
addZombie(horde, ch);
}
else
{
for(int j='1'; j<ch; j++)
addZombie(horde, previousZombie);
}
}