-3
具有一个File参数的方法。如果它是一个目录,则该方法返回其下面所有文件的总大小(字节数)。如果参数代表一个文件,该方法只返回该文件的大小。返回值的类型应该是long
(这是一种整数值的范围比int
大)。要确定由File对象表示的文件的大小,请使用File类的length()
方法(此方法不适用于目录,仅适用于文件)。需要使用递归来查找文件的大小
真的很感激任何帮助!看不出来。谢谢。
具有一个File参数的方法。如果它是一个目录,则该方法返回其下面所有文件的总大小(字节数)。如果参数代表一个文件,该方法只返回该文件的大小。返回值的类型应该是long
(这是一种整数值的范围比int
大)。要确定由File对象表示的文件的大小,请使用File类的length()
方法(此方法不适用于目录,仅适用于文件)。需要使用递归来查找文件的大小
真的很感激任何帮助!看不出来。谢谢。
鉴于这是功课,我不会直接给你答案。
递归如果一个方法调用自身的机制。很显然,如果一个方法不确定地做到这一点,你最终会得到一个stackoverflow异常,所以你需要某种退出条件,方法停止调用自己。
在你的情况下,退出的条件是,当你遇到一个文件,所以你必须代码是这样的:
int size(file)
{
if file represents a directory
{
loop over contents of the directory calling size method with each item and sum the return values
return the sum
}
else file represents a file
{
return file size
}
}
当这样的程序运行,每次调用被添加到堆栈,所以在这里你有以下的文件结构的情况下:
+ root
+ directory 1
+ file 1
+ file 2
+ file 3
您的堆栈将遵循此模式:
size(file1) size(file2)
-> size(directory) -> size(directory) -> size(directory) -> size(directory) -> size(directory) -> -> size(file3) ->
size(root) size(root) size(root) size(root) size(root) size(root) size(root) size(root) size(root)
希望能够向您展示一般方法,我将为您转换为Java。
显示您到目前为止所尝试的内容。如果它不起作用就没问题,那就是SO的目的。它可以帮助人们更好地了解你错过的东西,并且能够指引你朝着正确的方向前进。 – FatalError
@FatalError它只是一个作业问题 –
freelancer.com并为您的家庭工作付出财富。 – Makky