簡體   English   中英

在文件中逐個字符讀取

[英]Reading in character by character in file

我目前正在為一個班級項目開發一個原始的螞蟻大戰僵屍游戲。 我們將讀入一個“horde”文件,該文件包含與將要入侵的僵屍對應的字符和一個表示前一個僵屍字符倍數的整數(包括 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

我正在考慮對每個數字進行硬編碼,但我仍然遇到不知道如何添加同一對象的倍數的問題。 我真的很感激任何幫助。 謝謝大家。

您仍然可以像這樣以字符格式檢查整數。

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

        }

如果是 1,2 或 3,您可以通過這種方式檢查它。

如果你想添加多個對象,你可以創建一個對象列表並添加到“部落”對象

要判斷字符串中的代碼點是否為數字,請使用 Character.isDigit 方法; 要將字符串的一部分轉換為 int,請使用 Integer.parseInt 方法。

一些東西; 這是未經測試的代碼,因此將其視為更多提示;

您可能應該首先將僵屍創建分解為它自己的方法,因此您的循環看起來像;

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM