2014-01-15 90 views
2

試圖將輸入的數字轉換爲宿舍,鎳幣,硬幣和便士。有幾個問題:如何將錢轉換爲

public class Coins { 
public static void main(String[] args){ 

private int quarters, dimes, nickels, pennies; 

public void CoinsToChange(TotalCoins){ 
    quarters = (int)(TotalCoins/25); 
    TotalCoins %= 25; 
    dimes = (int)(TotalCoins/10); 
    TotalCoins %= 10; 
    nickels = (int)(TotalCoins/5); 
    TotalCoins %= 5; 
    pennies = (int)(TotalCoins/1); 
    TotalCoins %= 1; 

    System.out.println("Quarters = " + quarters + "\nDimes = " + dimes + "\nNickels = " + nickels + "\nPennies = " + pennies); 
    } 
} 
    } 

,這是我的測試類:(有調用CoinsTotChange方法問題IM)

 import java.util.Scanner; 

    public class CoinsTester { 
    Coins money = new Coins(); 
    money.CoinsToChange(changeMoney); 
    Scanner kybd = new Scanner(System.in); 
    int changeMoney = kybd.nextInt(); 

}

+7

你說你有問題,但你沒有說出什麼問題。 –

+2

對我來說,這看起來並不像JavaScript,因此將其重新標記。 – epascarello

+4

這個「公共無效CoinsToChange(TotalCoins)」甚至不應該在java中編譯 – user1455836

回答

3

嘗試改變操作的順序。在聲明/實例化之前,通常不能使用對象/變量。

Coins money = new Coins(); 
Scanner kybd = new Scanner(System.in); 
int changeMoney = kybd.nextInt(); 
money.CoinsToChange(changeMoney); 
1

有很多語法問題,但您的整體計算是正確的。嘗試是這樣的:

public class Coins { 
    public static void main(String[] args) { 
     Scanner kybd = new Scanner(System.in); 
     int totalPennies = kybd.nextInt(); 
     printMoneyAsChange(totalPennies); 
    } 

    public static void printMoneyAsChange(int pennies) { 
     int quarters = pennies/25; 
     pennies %= 25; 

     int dimes = pennies/10; 
     pennies %= 10; 

     int nickels = pennies/5; 
     pennies %= 5; 

     System.out.println(String.format("Quarters = %d\nDimes = %d\nNickels = %d\nPennies = %d", quarters, dimes, nickels, pennies)); 
    } 
} 
1

這些問題:

  • 在你的硬幣類,你試圖包裝的主要方法裏面的一切。您需要分別聲明您的方法和變量,然後在主方法中調用它們。
  • 而不是在您的Coins類中創建主要方法,它應該在您的測試器類中。
  • 當您使用參數聲明方法時,您需要指定類型。因此,而不是public void CoinsToChange(TotalCoins)它應該是public void CoinsToChange(int TotalCoins)
  • 最後,在您的測試人員班級中,您在申報和分配changeMoney之前撥打了money.CoinsToChange(changeMoney)。你需要把它放在它之後而不是在它之前。

使盡可能少的變化有可能,我得到了你的代碼,像這樣的工作:

public class Coins { 

    private int quarters, dimes, nickels, pennies; 

    public void CoinsToChange(int TotalCoins) { 
     quarters = (int) (TotalCoins/25); 
     TotalCoins %= 25; 
     dimes = (int) (TotalCoins/10); 
     TotalCoins %= 10; 
     nickels = (int) (TotalCoins/5); 
     TotalCoins %= 5; 
     pennies = (int) (TotalCoins/1); 
     TotalCoins %= 1; 

     System.out.println("Quarters = " + quarters + "\nDimes = " + dimes 
       + "\nNickels = " + nickels + "\nPennies = " + pennies); 
    } 
} 

Tester類:

import java.util.Scanner; 

    public class CoinsTester { 

     public static void main(String[] args) { 
      Coins money = new Coins(); 
      Scanner kybd = new Scanner(System.in); 
      int changeMoney = kybd.nextInt(); 
      money.CoinsToChange(changeMoney); // This line needs to be at the bottom 
     } 
    } 

注:一些其他的答案也給你提供更好的建議,必須處理更好的變量名稱和使用字符串格式。接受他們的建議是件好事。我特別想解決編譯器錯誤。

0

據我所見,存在一大堆提供的代碼問題。

在你的第一個代碼示例你介紹函數聲明和私人領域內

公共靜態無效的主要(字串[] args){}

,所以你的類將不能編譯,因此您將無法從其他類中使用它

然後,您在將它聲明爲@Tank在他的答案中建議之前使用了變量。

這也被認爲是一個很好的做法,堅持使用通用的命名約定和格式。

相關問題