2016-03-23 10 views
0

以下、ユーザー入力の結果を合計しようとしています。ループすると、ユーザーの入力が追加されないという点を除いて、プログラムは正常に動作します。何が間違っているのかを教えてもらえますか?whileループでユーザー入力を合計する方法 - Java

Scanner keyboard = new Scanner(System.in); 

double NICKEL = .05; 
double DIME = .10; 
double QUARTER = .25; 

//Other declarations 
double coin = 0; //to hold input from user 
double total = 0; 

while(coin <= 1){ 
    System.out.print("Insert coin: "); 
    coin = keyboard.nextDouble(); 

    if(coin==NICKEL || coin==DIME || coin==QUARTER){ 
     total += coin; 
     System.out.println("Amount entered: " +coin); 
    } 
    else{ 
     System.out.println("Invalid!"); 

     System.out.print("Insert coin: "); 
     coin = keyboard.nextDouble(); 
    } 
} 
+1

変更を呼び出す必要はありながら、(合計<= 1)' – wero

+0

がどのように入力がADDDされていないことを知っていますか?あなたはどこにでも合計を印刷しません。このような単純な問題を診断するには、デバッガを使用してください。貴重な人生を何ヶ月も節約できます。 –

+0

あなたは何をしようとしているのか詳しく説明できますか?そして、合計にあなたの合計が含まれていないことをどのように知っていますか?あなたのアプリケーションをデバッグしようとしましたか? – delucasvb

答えて

0

あなたの問題はここにある:

System.out.println("Amount entered: " +coin); 

cointotalでなければなりません。それは決してtotalの値を印刷することはありませんが、それは増加しています。

コメントに記されているように、このループは入力されたコインが1より大きくなるまで続きます。

+1

の 'coin'ループが正しいときに' total'の印を付けてください。 OPは入力された値を表示していますが、合計は – Ascalonian

+0

です@Ascalonianその証拠はありません。 '金額を入力しました'は、実行中の合計または最新の 'コイン'になります。しかし、OPは、合計がどこかに現れるべきだと考えていることは明らかです。そして、それが現在起こりうる唯一の場所です。 –

+1

「入力済み」という単語は、金額ではなく、入力された値を意味しませんか?いずれにしても、あなたは正しいです。「合計」を表示する必要があります。 OPはwhileループの後にそれを印刷するだけでよいはずです。 – Ascalonian

0

ループの最後に合計を印刷する必要があります。現在コインの値が入力されているので、System.out.println("Total: " + total);をコードのどこかに入れてwhileループの後に置く必要があります。

補足として、elseブロックでは、coin = keyboard.nextDouble();を再度呼び出していますが、その値はループが終了する前には使用されません。ユーザーが無効な値を入力したと仮定すれば、エラーを通知するだけで十分です。その後、ループが再び始まると、コインの値が設定されます。

また、あなたのループが永遠に動くように見えます。硬貨の値を常にNICKLE, DIMEまたはQUARTERにリセットするので、ループは決して停止しません。それは問題だ。あなたのコードから、少なくとも1ドルまでの合計値をユーザーが入力したときにループを止めたいと思うように見えます。その場合、whileループ条件はwhile(total <= 1)にする必要があります。

0

最初にライトの金額が必要です。コインの価値ではありません。 System.out.println("Amount entered: " +total);

第2に、whileループが問題を引き起こす可能性があります。ユーザーが2番目の入力呼び出しを入力すると、coin = keyboard.nextDouble();が実行されます。再びユーザーが作業していない間に> 1を入力した場合。最初に確認してから、コインの価値を割り当てる必要があります。 そして、あなたはいけないもうしばらく(コイン<= 1) ``に `coin = keyboard.nextDouble();

Scanner keyboard = new Scanner(System.in); 

     double NICKEL = .05; 
     double DIME = .10; 
     double QUARTER = .25; 

     //Other declarations 
     double coin = 0; //to hold input from user 
     double total = 0; 

     while(coin <= 1){ 
      System.out.print("Insert coin: "); 
      double key = keyboard.nextDouble(); 

      if(key==NICKEL || key==DIME || key==QUARTER){ 
       coin = key; 
       total += coin; 
       System.out.println("Amount entered: " +total); 
      } 
      else { 
       System.out.println("Invalid!"); 
      } 
     } 
関連する問題