-2

$1.00 未満でゼロより大きいおつりを取り、そのおつりに必要な 4 分の 1、1 セント硬貨、5 セント硬貨、1 セント硬貨の数を表示しようとしています。出力は、次の文法規則に従って、英語に似た説明的な方法で提示する必要があります。

金額がゼロの場合は、「いいえ」という言葉を使用する必要があります。量が 1 の場合、単位は単数でなければなりません。金額が 1 でない場合、単位は複数でなければなりません。

また、プログラムは、0 未満または 1 を超えるものを入力したときにユーザーの間違いを検出し、データ検証ループに入ってプロンプトを表示し、ユーザーに金額の再入力を求める必要があります。このループは、ユーザーが $1.00 未満でゼロより大きい金額を入力するまで続きます。

コードを実行すると、繰り返し4が返されました。

御時間ありがとうございます!どんな助けでも大歓迎です!

これまでの私のコード:

import java.util.Scanner;

    public class CoinChange
    {
        public static void main(String[] args)
        {               
           double amt; 
           int cents, quarter, dime, nickle, penny;

           Scanner keyboard = new Scanner(System.in); 

           System.out.print("Change in Coins\n" +
                           "----------------\n\n");

           System.out.println("Enter the amount less than $1.00, but\n" +
                            "more than zero.");

           System.out.print("\nEnter amount: ");
                    amt = keyboard.nextInt();

    // ----------------------------------------------             

           cents = (int)(amt*100 + .1);

           quarter = cents/25;
           cents %= 25;

           dime = cents/10;
           cents %= 10;

           nickle = cents/5;
           cents %= 5;

           penny = cents;

    // -----------------------------------------

           while(amt > 0 && amt <= 1)
           {

    // ----------------------------------------- 

             if(quarter == 0)
             {
                System.out.print("no ");
             }
             else
                System.out.print(quarter);
             }
             if(quarter == 1)
             {
                System.out.print("quarter");
             }
             else
             {
                System.out.print("quarters");
             }



           }           
    }
4

5 に答える 5

0

あなたのコードは正常に動作します。唯一の問題は、amt が常に元の金額であるため、最後にループに陥ってしまい、出力が永久に出力されることです。

たとえば、出力したい場合は、

クォーター クォーター ダイム ペニー ペニー

次に、進むにつれて amt を減らす必要があります。

編集**まあ...使用された四半期の数を数えているだけのように、奇妙に見えます。しかし、問題は同じです。なぜループが必要なのかわかりません。

于 2013-09-26T01:53:00.653 に答える
0

Scanner.nextInt()int を返します。ユーザーが 1 から 99 までの整数のペニーを入力することを期待している場合は、それをセントに割り当てる必要があります。と混同していますamt

于 2013-09-26T01:59:00.143 に答える