2016-04-05 5 views
0

記載された変更量(1〜99)を満たすために必要な最小限の硬貨(四半期、十二分、ニッケルおよびペニー)を取得しようとしています。例:硬貨の数を変更する

Change: 93 

Quarters: 3 

Dimes: 1 

Nickels: 1 

Pennies: 3 

私がプログラムを実行すると、私は答えが得られません。私の質問は、上記のソリューションのように私のプログラムの出力をどのように見えるようにするのですか?プログラム内の方程式を変更して、必要な数値を取得していますか?私が正しいプログラムの唯一の部分は、記載された量を満たすのに必要な四分の一の量です。

package mincoins; 
import java.util.Scanner; 

public class MinCoins2 
{ 

    public static void main(String[] args) 

    { 
     int change = 0; 
     int quarters = 0; 
     int dimes = 0; 
     int nickels = 0; 
     int pennies = 0; 
     try (//creates a copy of Scanner class 
       Scanner in = new Scanner(System.in)) 
     { 
      System.out.println("Please enter amount of change(1-99)"); 

      change = in.nextInt(); 

      //loop for quarters 
      while (change >= 25) 
      { 
       change = change - 25; 
       quarters = quarters + 1; 
      } 
      while (change >= 10) 
      { 
       change = change - 10; 
       dimes = dimes + 1; 
      } 
      while (change >= 5) 
      { 
       change = change - 5; 
       nickels = nickels + 1; 
      } 
      pennies = change; 
      System.out.println("Change: " + change); 
      System.out.println("Quarters = " + change); 
      System.out.println("Dimes = " + change); 
      System.out.println("Nickels = " + change); 
      System.out.println("Pennies = " + change); 
     } 
    }//end of main 
}//end of class 
+0

あなたが0の変化を持っている必要があります。それは数学の問題ではなく、それは論理的な問題です –

+0

最後の5行では、 'quarter'、' dimes'、 'nickels'と' pennies'の代わりに 'change'を表示します! –

+0

私が何をしても、それは私に何が欲しいのかはまだ分かりません。 –

答えて

1

あなたは最後の4行にタイプミスがあります:

System.out.println("Change:" + change); 
System.out.println("Quarters= "+ change); 
System.out.println("Dimes=" + change); 
System.out.println("Nickels=" + change); 
System.out.println("Pennies=" + change); 

があります。このプログラムは、ここで私がこれまで持っているものだ1〜99

の任意の記載された金額のために働く必要がありますすべての印刷change

また、whileループ条件は、>ではなく、である必要があります。

最後に、変更を最後に印刷するには、whileループで変更するのでコピーする必要があります。

change = in.nextInt(); 
int changeOut = change; 
... 
System.out.println("Change:" + changeOut); 

Live Demo

+0

それでは、出力をソリューションと同じにするために変更するのではなく、どうすればよいですか? –

+0

さて、最後の4つは「四分の一」、「二拍」、「ニッケルズ」、「ペニー」です。 –

+0

私はそれを変更しましたが、私はそれでも同じ結果が得られます:System.out.println( "Change =" + change); System.out.println( "四半期=" +四半期); System.out.println( "Dimes =" + dimes); System.out.println( "ニッケル=" +ニッケル "); System.out.println( "Pennies =" + pennies); –

0

主な問題は、あなたが使用している変数です。適切な場所にquartersdimesnickels、および変数を使用する必要があります。

もう1つ論理的なエラーがあります。ペニーカウントを構成するために残りのすべての変更を使い果たす必要があります。 (それ 0でなければならないので)あなたの出力(あなたが実際に必要とする1つ)を使用すると、余っの変化をカウントすることを強制しないので、あなたは完全に別のループを回避し、ちょうど直接割り当てることができpennieschangeへ:

pennies = change; 

...これにより残ったペニーの総数が正しい結果になります。

いくつかの一般的なクリーンアップでは、少し混乱させる可能性があるので、printステートメントでの割り当てを避けることもできます。代わりにSystem.out.printlnから独立したchange -= 25などのステートメントを使用してください。

+0

私は何を入れても、まだ動作しません。 –

+0

@LilyPeterson:私はかなり自信があります。私は上記の規定の変更でコードを実行し、あなたが探している正確な出力を受け取ります。あなたがまだ問題に遭遇している場合は、*重要な詳細*をあなたの質問に追加して、あなたを導くことができるようにしてください。 – Makoto

1

明らかにタイプミスが、問題となっているにする必要がある:

System.out.println("Quarters = " + quarters); 
System.out.println("Dimes = " + dimes); 
System.out.println("Nickels = " + nickles); 
System.out.println("Pennies = " + change); 

しかし、私はこのコードはW.R.T.をどのように機能するかについての提案をしたいですこれは簡単にループすることなく行われるループ、例えば:

//loop for quarters 
while (change > 25) { 
    change = change - 25; 
    quarters = quarters + 1; 
} 

に:change25int S、SO /は整数除算を行う予定であるため

quarters = change/25; 
change = change - quarters * 25; 

です。それは、変更に適合する四半期の最大数、つまり四捨五入されます。

さらに一歩行く、あなたはまた、各ステップで、残りの変更を取得するために%剰余演算子を使用することができます。

quarters = change/25; 
change = change % 25; 

dimes = change/10; 
change = change % 10; 

nickels = change/5; 
change = change % 5; 
+0

まだ動作しません。また、1から99までの任意の入力に対応するには、このプログラムが必要です。 –

+0

OK。あなたは何度も 'change'を何度も印刷しているタイプミスを修正する必要があります。他の答えで詳述されているように、私は明示的に私の答えにその修正を入れました。 – weston

+0

また、 'change = in.nextInt();'の直後に、 'System.out.println(" Change: "+ change"; – weston

関連する問題