2016-09-23 2 views
-2

私は、四半期、ニッケル、ダイム、ペニーの変化を返すプログラムを書くことになっています。編集APコンピュータ科学U1例2

しかし、私は変更と四半期のみを得ることができます。

他の変更作業はありません。 PEFのコメント@上のエラボレーション

import java.math.*; 
import java.text.*; 
import java.util.*; 

public class Main { 
public static void main(String[] args) { 
Scanner scanner = new Scanner(System.in); 
double amountPaid, cost, changeOwed ; 
double pennies, nickels, dimes, quarters, change; 

System.out.println("Please Enter the Amount Paid"); 
amountPaid = scanner.nextDouble(); 

System.out.println("Please Enter the Total Cost of the Item:"); 
cost = scanner.nextDouble(); 

double roundOffPaid = amountPaid * 100; 
double roundOffCost = cost *100; 
double change2 = roundOffPaid - roundOffCost; 
change = change2/100; 
System.out.println(change); 


quarters = Math.floor(change/0.25); 
dimes = Math.floor(change % .25)/.10; 
nickels = Math.floor(change % .10)/.5; 
pennies = Math.floor(change % .5)/.1; 
System.out.println("Quarters: " +quarters); 
System.out.println("Dimes: "+ dimes); 
System.out.println("Nickels" + nickels); 
System.out.println("Pennies "+ pennies); 
    } 
} 
+2

入力を適切な 'int'(100倍してキャスト)に変換します。次に、整数を使用して必要な操作をすべて実行します。 – PEF

答えて

4

...

あなたの問題が原因浮動小数点の丸め誤差の影響を最も可能性があります。詳しい説明については、

(この場合)解決策は単純です。指定された金額をドルからセントに変換して100を掛け、intの変数を使用して(セント)セントの数を表します。

0

コードに誤りはありません。 '変更'を0.25,0.1と0.5で除算して余りを得ているので、結果として常に0が得られます。

関連する問題