-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