gpt4 book ai didi

java - 未按预期读取文件的代码片段?

转载 作者:行者123 更新时间:2023-12-01 14:25:53 25 4
gpt4 key购买 nike

这里我有一个正在进行的文件读取实用程序,我试图使用它从文件加载不同的子弹发射配置(游戏中对象)。

package game.entity.bullet;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.lwjgl.util.vector.Vector2f;

public class ConfigReader {

public static List<BulletConfiguration> configurations = new ArrayList<BulletConfiguration>();

public void loadConfigs(String input) throws IOException {
File file = new File(input);
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null) {
if (line.startsWith("START:")) {
BulletConfiguration b = new BulletConfiguration();
String name = line.split(": ")[1];
b.name = name;
while (!line.startsWith("END:")) {
line = reader.readLine();
String bt = line.split(" ")[1].toLowerCase();
Vector2f bulletPos = new Vector2f(
Float.parseFloat(line.split(" ")[2].split(":")[0]),
Float.parseFloat(line.split(" ")[2].split(":")[1]));
Vector2f bulletVelocity = new Vector2f(
Float.parseFloat(line.split(" ")[3].split(":")[0]),
Float.parseFloat(line.split(" ")[3].split(":")[1]));
b.bullets.add(BulletType.valueOf(bt));
b.bullet_spawn_positions.add(bulletPos);
b.bullet_velocities.add(bulletVelocity);
}
configurations.add(b);
}
}
}
}

这里有几个示例配置作为示例:

BEGIN: Cannon
p Standard 0:0 0:1
END:

BEGIN: Triple Cannon
p Small 0:0 -0.25:1
p Small 0:0 0:1
p Small 0:0 0.25:1
END:

这就是我需要帮助解释我想要做的事情的全部内容。它应该检查何时声明“BEGIN:”,然后遍历直到遇到“END:”声明,并将这些值解析为各自的值。

另外,请对我的问题提供一些反馈;这是我的第一次,所以我不确定这是否完全可以接受。

最佳答案

按以下方式更改 while 循环:

line = reader.readLine();

while (!line.startsWith("END:")) {
String bt = line.split(" ")[1].toLowerCase();
Vector2f bulletPos = new Vector2f(
Float.parseFloat(line.split(" ")[2].split(":")[0]),
Float.parseFloat(line.split(" ")[2].split(":")[1]));
Vector2f bulletVelocity = new Vector2f(
Float.parseFloat(line.split(" ")[3].split(":")[0]),
Float.parseFloat(line.split(" ")[3].split(":")[1]));
b.bullets.add(BulletType.valueOf(bt));
b.bullet_spawn_positions.add(bulletPos);
b.bullet_velocities.add(bulletVelocity);
line = reader.readLine();
}

正如@MadProgrammer 所指出的那样,更改

if (line.startsWith("START:"))

if (line.startsWith("BEGIN:"))

关于java - 未按预期读取文件的代码片段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17183723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com