-1
問題是想象一個程序,它將文件壓縮到其原始大小的80%並將它們存儲在存儲介質上。在壓縮文件存儲之前,必須將其分成512個字節的塊。編寫一個程序,首先讀取存儲介質上可用的塊數。然後,在循環中,讀取文件的未壓縮大小,並確定壓縮文件是否適合存儲介質上的剩餘空間。如果是這樣,程序應該壓縮並保存文件。它會一直持續到遇到超出媒體可用空間的文件。while while if loop code error
然而,我的代碼保持返回是不正確的整數....
import java.util.Scanner;
public class HW2Q2
{
public static void main(String[] args)
{
int size;
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the number of blocks available");
size=keyboard.nextInt();
System.out.println("Available number of blocks is " + size);
int filesize;
while(size!=0)
{
System.out.println("Enter the size of the file that is to be stored");
filesize=keyboard.nextInt();
filesize=filesize/512*80/100;
System.out.println("compressed file size is " + filesize);
if(filesize>size)
{
System.out.println("the number of blocks available, " + size + " is less than the required number, " + filesize);
break;
}
else
size=size-filesize;
{
System.out.println("available number of blocks is " + size);
}
}
}}
對不起,我是全新的,你能解釋新價值需要去哪裏嗎? –
那麼,在文件適合驅動器的情況下,您可以計算'sizenew = size - compsize'即。寫入文件後的大小是當前可用大小減去您寫入文件的大小。因此,在下一個循環中,您必須將其與新尺寸進行比較,而不是舊尺寸。因此,只需將newsize變量完全刪除,並將新大小賦值給size變量,即'size = size - compsize';因此,在循環的每次迭代中,可用的大小將相應地減少 – derpirscher
我接受了您的建議並更改了變量,但現在我的數學出錯了,例如,如果輸入「50」,那麼「25000」它返回壓縮文件是38個塊,還有12個塊,但25000/512 * 80/100 = 39.06這應該出來40作爲一個int權利?我編輯了上面的代碼來顯示我的更改。 –