gpt4 book ai didi

java 组合设计模式(目录&文件)

转载 作者:行者123 更新时间:2023-12-02 05:14:13 27 4
gpt4 key购买 nike

下面的输出是不同的。我不知道哪里出了问题,我已经多次尝试纠正。有File和Folder两个java文件。对于格式,对于列出的文件夹,末尾必须有一个“/”,对于每个文件夹/文件,路径必须是绝对路径。

输出必须是

dir1/
dir1/f1/
dir1/dir2/
dir1/dir2/f3/
dir1/dir2/f4/
dir1/dir2/dir3/
dir1/dir2/dir3/f5/
dir1/f2/

但是,我的输出是

dir1/
dir1/f1/
dir1/dir2/
dir2/f3/
dir2/f4/
dir2/dir3/
dir3/f5/
dir1/f2/

这是我的代码。

public class File implements Composite {
public String name;
//private ArrayList<File>a=new ArrayList<File>();


public File(String name)
{
this.name=name;
}


public void list() {

System.out.print(name+"/");
System.out.println();
}
}

文件夹.java

import java.util.ArrayList;

public class Folder implements Composite{
public String name;
public ArrayList b = new ArrayList();

public Folder(String name){
this.name=name;
}

public void add(Object o)
{

b.add(o);
}

public void list(){
int e=b.indexOf(name)+1;
System.out.println(name+"/");
Composite r=(Composite) b.get(e);
for(int i=0;i<b.size();i++) {

System.out.print(name+"/");



Composite a=(Composite)b.get(i);

a.list();
}

}

public String getName(){
return name;
}
}

最佳答案

在代码中,您需要跟踪每个文件夹的父文件夹。

因此构造函数需要是Folder(Folder Parent, String name)。根(最顶层)文件夹将 null 作为父文件夹。

当您打印名称时,您需要询问当前文件夹的路径。此方法的代码为:

 public String getPath() {
if(null == parent) return name;

return parent.getPath() + "/" + name;
}

关于java 组合设计模式(目录&文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27108326/

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