【问题标题】:Reading in character by character in file在文件中逐个字符读取
【发布时间】:2012-11-24 17:37:49
【问题描述】:

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

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

【问题讨论】:

  • 我不明白这个问题
  • 文件示例中的 1 是否意味着有 1 个 S 和 Z 以及 I?
  • 我的问题是如何区分字符串中的字符是否为 int 以及如何根据 int 创建对象的倍数编辑:我无法控制文件内容
  • 如果文件是SZ2I1,你想要几个科学家?
  • SZI1 是:1 个科学家僵尸、1 个标准僵尸、1 个受感染僵尸和另一个受感染僵尸。很抱歉造成混乱

标签: java string file project bufferedreader


【解决方案1】:

你仍然可以像这样检查 char 格式的整数。

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

        }

如果是1,2或者3可以这样查看。

如果你想添加多个对象,你可以创建一个对象列表并添加到“部落”对象

【讨论】:

    【解决方案2】:

    一些事情;这是未经测试的代码,所以把它当作一个提示;

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

    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);
        }
    }
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-25
        相关资源
        最近更新 更多