有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java自动填充ArrayList,搜索更好的选项

我在这里使用这段代码自动用obj文件的目录路径填充字符串数组列表,以供以后在动画中使用,但这有一个小问题:

private List<String> bunny_WalkCycle = new ArrayList<String>(); 
private int bunny_getWalkFrame = 0;

private void prepare_Bunny_WalkCycle() {

    String bunny_walkFrame = "/bunnyAnimation/bunnyFrame0.obj";

    while(bunny_WalkCycle.size() != 30) { // 30 obj files to loop through

        if(bunny_getWalkFrame != 0) {
            bunny_walkFrame = 
                "/bunnyAnimation/bunnyWalkAnim/bunnyWalkFrame_"+bunny_getWalkFrame+".obj";          
        }

        bunny_WalkCycle.add(bunny_getWalkFrame);

        bunny_getWalkFrame++;
    }
}

现在的问题是,blender for animations中的命名约定在实际数字之前有零,所以如下所示:

bunnyWalkFrame_000001.obj
bunnyWalkFrame_000002.obj
bunnyWalkFrame_000003.obj
...
bunnyWalkFrame_000030.obj

用我的prepare_Bunny_WalkCycle方法,我无法解释零,所以我会更改名称并去掉零。。这对于不太多的帧来说可能没问题,但一旦我达到100帧,它就会变得很痛苦。。所以我的问题是:

有什么智能的方法可以解释代码中的零,而不必手动重命名每个文件并删除它们


共 (2) 个答案

  1. # 2 楼答案

    这里有两种选择。首先,可以使用字符串格式化程序创建前导为零的文件名:

    bunny_WalkCycle.add("/bunnyAnimation/bunnyFrame0.obj");
    for (int frame = 1; frame <= 30; frame++) {
        bunny_WalkCycle.add(
                String.format("/bunnyAnimation/bunnyWalkAnim/bunnyWalkFrame_%06s.obj", frame));
    }
    

    第二个选项是,如果目录中已包含所有必需的文件,则可以一次性获取所有文件:

    bunny_WalkCycle.add("/bunnyAnimation/bunnyFrame0.obj");
    bunny_WalkCycle.addAll(Arrays.asList(new File("/bunnyAnimation/bunnyWalkAnim").list()));