2012-10-18 47 views
0

由於某種原因,這種轉換確實讓我頭痛。我可以在紙上和腦海中進行轉換,但是當我嘗試將它寫入Java中的作業時,它真的讓我感到困惑。這項任務是爲用戶輸入一個以千克爲單位的數字,並編寫一個程序說,這是一條線上的多少磅,這是另一條線上的多少盎司。一般來說,轉換會讓我失望,但我不確定這是否正確。我需要在任何地方使用類型嗎?需要幫助將公斤轉換爲英鎊和盎司

import acm.program.*; 

public class KilogramsToPoundsAndOunces extends ConsoleProgram { 

public void run(){ 
println("This programs converts kilograms into pounds and ounces."); 
double kilo = readDouble("Enter the kilogram value: "); 
double totalOunces = (kilo * POUNDS_PER_KILOGRAM) * OUNCES_PER_POUND; 
int totalPounds = totalOunces % OUNCES_PER_POUND; 
double leftOverOunces = totalOunces - (totalPounds * OUNCES_PER_POUND); 
println(totalPounds + "lbs" + "."); 
println(leftOverOunces + "ozs" + ".") 

} 
private static void POUNDS_PER_KILOGRAM = 2.2; 
private static void OUNCES_PER_POUND = 16; 
} 
+0

如果你說出你發現的困難,你會得到更有幫助的答案。你有意想不到的輸出?什麼是輸入和意外輸出。 –

回答

6

您需要定義數值數據類型爲你的常量:

private static double POUNDS_PER_KILOGRAM = 2.2; 
private static int OUNCES_PER_POUND = 16; 

而且totalPounds需要被強制轉換爲int編譯:

int totalPounds = (int) (totalOunces % OUNCES_PER_POUND); 

雖然這應該成爲:

int totalPounds = (int) (totalOunces/OUNCES_PER_POUND); 

(見@Kleanthis答案)

+0

謝謝。我不知道我是如何忘記將這個類型放在常量中的,並且出於某種原因,我的頭腦中出現了%和/或相反的情況。 –

1

那麼首先,在全局POUNDS_PER_KILOGRAMOUNCES_PER_POUND是變量,因此,也沒有返回類型(你有他們「迴歸」無效)。

身高:

private final double POUNDS_PER_KILOGRAM = 2.2; 
+0

謝謝。不知道我是怎麼忘記的。 –

1

我覺得這裏是在程序出錯:

int totalPounds = totalOunces % OUNCES_PER_POUND; 
double leftOverOunces = totalOunces - (totalPounds * OUNCES_PER_POUND); 

你看,一旦你得到儘可能多模運算符不返回總磅,但剩下盎司儘可能完成支付。例如

int leftoverOunces = totalOunces % OUNCES_PER_POUND; 

int totalPounds = (int)(totalOunses/OUNCES_PER_POUND); 

,應該讓你在正確的結果。

+0

謝謝。出於某種原因,我得到了%和/逆轉在我的頭上。 –