3

わかりましたので、金額を尋ねるプログラムを作成する必要があります。次に、それを作るために必要なコインの最小量を教えてくれる必要があります。使用できるコインは、ドル、クォーター、ダイム、ニッケル、ペニーです。たとえば、プログラムを実行すると、次のようになります。

> run Coins
Enter the amount of given money:
 [1.73]
Give the seller 8 coins:
1 dollars,
2 quarters,
2 dime,
0 nickels,
3 pennies.

これは私がこれまでに持っているものです:

import java.util.Scanner;

class Coins {
  public static void main (String args[]) {
     Scanner input = new Scanner(System.in);
     double  money;
     System.out.println("Enter the amount of money ");
     money = input.nextDouble();




     while (money > 0.0 ){
       if (money >= 1) {
          System.out.println(money/1+"dollars");
          money -= 1;

     }
       else if (money>=.25) {
         System.out.println(money/.25+"quarters");
         money-=.25;

       }
       else if (money>=.10) {
         System.out.println(money/.10+"Dimes");
         money-=.10;
       }
       else if (money>=.05) {
         System.out.println(money/.05+"Nickels");
         money-=.05;
       }
       else if (money>=.01) {
         System.out.println(money/.01+"Penny");
         money-=.01;
       }
     }        
  }
}  

助けが必要な部分は次のとおりです。プログラムを実行して金額 1.73 を入力すると、コードに書かれているように、数値 1.73 を取り、それを 1 で割り、「1.73 ドル」と出力します。小数部分を取り除く方法が必要なので、「1.73 ドル」ではなく「1 ドル」と出力します。しかし、これを行う方法がわかりません。int に変換しようとしましたが、他のステートメントの流れを台無しにします。私を助けてください。

4

2 に答える 2

2

分割後の余りを取り除く必要があります。これに使用できますMath.floor()

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

     double  money = 1.73;

    int dollars = (int) Math.floor(money/1);
    money -= dollars * 1;

    int quarters = (int) Math.floor(money/0.25);
    money -= quarters * 0.25;

    int dimes = (int) Math.floor(money/0.10);
    money -= dimes * 0.10;

    int nickels = (int) Math.floor(money/0.05);
    money -= nickels * 0.05;

    int pennies = (int) Math.round(money * 100);

    System.out.println("Dollars: " + dollars);
    System.out.println("Quarters: " + quarters);
    System.out.println("Dimes: " + dimes);
    System.out.println("Nickels: " + nickels);
    System.out.println("Pennies: " + pennies);
  }
}

その結果:

Dollars: 1
Quarters: 2
Dimes: 2
Nickels: 0
Pennies: 3
于 2013-01-23T20:13:24.493 に答える
2

floorへのキャストとの組み合わせを使用する必要がありますdouble。次のコードが機能します。

class Coins {
    public static void main (String args[]) {
        double  money = 1.73;

        while (money > 0.0 ){
            if (money >= 1) {
                System.out.println(Math.floor(money/1)+" dollars");
                money -= Math.floor(money/1)*(double)1;

            }
            else if (money>=.25) {
                System.out.println(Math.floor(money/.25)+" quarters");
                money-=Math.floor(money/.25)*(double).25;

            }
            else if (money>=.10) {
                System.out.println(Math.floor(money/.10)+" Dimes");
                money-=Math.floor(money/.10)*(double).10;
            }
            else if (money>=.05) {
                System.out.println(Math.floor(money/.05)+" Nickels");
                money-=Math.floor(money/.05)*(double).05;
            }
            else if (money>=.01) {
                System.out.println(Math.round(money/.01)+" Penny");
                money-=Math.round(money/.01)*(double).01;
            }
        }
    }
}

あなたが持っていた別のバグ:
あなたは引き算すべきではMath.floor(money/XXX)*(double)XXXありません(double)XXX

于 2013-01-23T20:16:45.733 に答える