Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_File_Project_Bufferedreader - Fatal编程技术网

Java 在文件中逐字读取

Java 在文件中逐字读取,java,string,file,project,bufferedreader,Java,String,File,Project,Bufferedreader,我目前正在为一个班级项目制作一个原始蚂蚁对僵尸的游戏。我们将读入一个“部落”文件,该文件包含将要入侵的僵尸对应的字符和一个整数(包括1-9),该整数表示前一个僵尸字符的倍数。我遇到的问题是区分文件字符串中的int和char,以及如何根据int创建多个对象。到目前为止,我已经做到了这一点: public void readHordeFile(String filename){ try { file = new FileReader(filename); } catc

我目前正在为一个班级项目制作一个原始蚂蚁对僵尸的游戏。我们将读入一个“部落”文件,该文件包含将要入侵的僵尸对应的字符和一个整数(包括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();
    }

}
public void readHordeFile(字符串文件名){
试一试{
文件=新文件读取器(文件名);
}catch(filenotfounde异常){
System.out.println(“未找到文件”+e.getMessage());
}
buf=新的BufferedReader(文件);
试一试{
zombieString=buf.readLine();
对于(int i=0;i
示例文件包含:SZI1


我想对每个数字进行硬编码,但我仍然遇到不知道如何将同一对象的倍数相加的问题。我真的很感激任何帮助。提前谢谢大家。

您仍然可以像这样检查字符格式的整数

else if(zombieString.charAt(i) == '1'){

        }
如果是1、2或3,可以用这种方法检查


如果要添加多个对象,可以创建对象列表并添加到“horde”对象中

要判断字符串中的代码点是否为数字,请使用Character.isDigit方法;要将字符串的一部分转换成整数,可以使用Integer.parseInt方法。

一些东西;这是未经测试的代码,因此将其视为更多的提示

您可能应该首先将僵尸创建分解为它自己的方法,这样您的循环看起来像

zombieString = buf.readLine();
for(int i = 0; i < zombieString.length(); i++){
    Character ch = zombieString.charAt(i);
    addZombie(horde, ch);
}
zombieString=buf.readLine();
对于(int i=0;i
然后,您可以将最新创建的僵尸保存在状态变量中

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();
对于(int i=0;i
…并添加一个检查,如果下一个字符是数字,如果是,只需添加前一个僵尸的正确数字

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);
    }
}
Character-previousZombie='';
zombieString=buf.readLine();
对于(int i=0;i对于(int j='1';jI不理解这个问题文件示例中的1是否意味着有1s和Z以及I?我的问题是如何区分字符串中的字符是否是int以及如何根据int编辑创建对象的倍数:我无法控制文件内容如果文件是SZ2I1,您需要多少科学家?SZI1是:1科学家僵尸,1个标准僵尸,1个受感染的僵尸,还有另一个受感染的僵尸。很抱歉造成混乱