5

いつものように、私はたくさんのグーグルの後に質問をすることに頼るのに十分必死になっているもう一人の高校生です。

私はそれらのプログラムの1つに取り組んでおり、実際の生活にいくらか適用できます(ただし、実際には適用できません)。この場合、ダイム、ニッケル、クォーター、残りのセントの数を合計し、それらを1つの文に表示する変更カウンター。

私の問題は、コンマと最後に「and」を使用する適切な文の形式を作成する必要があることです。これは、現在の非常に限られた知識では管理できません。

  • 通貨の分割が表示される場所はどこでも、それを表す変数です(セント、ダイムなど)。
  • backupInputは、ユーザーが選択したセント数(1〜100のいずれか)を保持する変数です。

私が聞きたいことに関係する私のプログラムの部分はこれです:

    System.out.print(backupInput + ": ");

    // Outputting the quarters
    if (quarters > 0)
    {
      if (quarters == 1)
        System.out.print("one quarter, ");
      else
        System.out.print(quarters + " quarters, ");
    }

    // Outputting the dimes
    if (dimes > 0)
    {
      if (dimes == 1)
        System.out.print("one dime, ");
      else
        System.out.print(dimes + " dimes, ");
    }  

    // Outputting the nickels
    if (nickels > 0)
    {
      if (nickels == 1)
        System.out.print("one nickel, ");
      else
        System.out.print(nickels + " nickels ");
    }

    // Outputting the cents
    if (cents > 0)
    {
      if (cents == 1)
        System.out.print(" one cent");
      else
        System.out.print(cents + " cents ");
    }

問題は、この出力が次のような結果をもたらすことです。

7: 1 dime, 2 cents

あるはずですが、与えられたフォーマットの例によると:

7: 1 dime and 2 cents
65: 2 quarters, 1 dime and one nickel
66: 2 quarters, 1 dime, 1 nickel, and one cent

私は考えられるほとんどすべてのことを試しましたが、すべての試みで非効率的であり、すべての場合でさえ機能しなかったことを覚えておいてください。私はここでの仕事から身を守ろうとはしていません。私はそれを正しく行うことの背後にある概念を学びたいだけです。

それについてです。プログラムの残りの部分はうまく機能し、ダンディです。誰かが私を助けてくれるなら、私のような初心者のために答えを理解しやすいようにしてください。そうすれば、概念を理解しやすくなります:)ありがとう!

4

3 に答える 3

5

問題を少し分解する方が簡単な場合もあります。私がおそらく行うことは、文字列の配列を作成することです:["2クォーター"、 "1ダイム"、 "1ニッケル"、"1セント"]

次に、私が持っていた(有効な)配列要素の数を確認し、N個の要素のうちN-1個をループして、コンマで区切られた行を出力します。次に(複数の配列要素があると仮定して)「and」の後に最後の配列要素を出力します。

「より効率的」な方法は他にもありますが、私はこのビジネスに40年携わっており、いつでも「効率的」よりも「理解しやすく、機能しやすい」と考えています。

(もちろん、これがこの猫の皮を剥ぐ唯一の方法ではありません。おそらく同じように単純な他の方法もありますが、それはあなたや他の人が発明するためのものです。)

if(すべてのステートメント間で「and」を挿入するかどうかを決定する必要のあるコードを避けることが重要であることに注意してください。同じロジックを何度も繰り返すと、エラーが増えてメンテナンスの悪夢が生まれる傾向があります。)

于 2012-10-30T20:30:35.423 に答える
2

現在のアプローチは、コインタイプのカウントを計算し、すぐに結果を印刷することです。

代わりに、最初に印刷せずにすべてのコインのカウントを計算すると、カウントがゼロ以外の最小のコイン(したがって、出力で最後に名前が付けられるコイン)を確認できます。それを使用して、カウントを接着して目的のテキストを印刷する方法を理解できると思います。

于 2012-10-30T20:27:19.807 に答える
1

あなたはJavaを学んでいるので、完全な解決策を提供することはしませんが、ここにいくつかの方向性があります。

  • ouptutを少しずつではなく、変数Stringに格納しますSystem.out.print
  • その中でString、末尾のコンマがある場合は削除します(cents == 0またはの場合のみnickels > 1ですが、後者はあなたの間違いである可能性があります)
  • " and"存在する場合は、最後のコンマを、に置き換えます
  • 出力String

それでも完全に行き詰まっている場合は、お知らせください。誰かが既製のソリューションを思い付くと確信しています(まだの場合)。

于 2012-10-30T20:26:53.720 に答える