如何在我的程序中包含“和”在正确的位置

时间:2012-10-30 20:23:14

标签: java conditional-statements currency

像往常一样,我只是另一个绝望的高中生,在经过大量的谷歌搜索之后不得不诉诸问题。

我正在开发其中一个可以在现实生活中应用的程序(但从来没有)。在这种情况下,一个更改计数器,总计一角硬币,镍币,四分之一和剩余的分数,并用一句话显示它们。

我的问题是,我需要制作一个正确的句子格式,最后使用逗号和“和”,我无法用当前非常有限的知识来管理。

  • 您看到货币分配的任何地方都是代表的变量 它(美分,硬币等)
  • 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

请记住,我几乎尝试了所有我能想到的东西,并且在我的所有尝试中,它效率太低,甚至在所有情况下都无法工作。我不是想把自己从这里拯救出来。我只是想学习正确的做法背后的概念。

就是这样。该程序的其余部分工作正常和花花公子。如果你们中的任何一个人可以帮助我,请保持答案易于理解为像我这样的新手,所以更容易掌握这个概念:) 谢谢!

3 个答案:

答案 0 :(得分:5)

有时候更容易解决问题。我可能做的是创建一个字符串数组:[“2个季度”,“1个角钱”,“1个镍币”,“1分”]

然后查看我有多少(有效)数组元素并循环遍历N个元素的N-1,输出用逗号分隔的行。然后(假设有多个数组元素)输出“和”后跟最后一个数组元素。

还有其他方式“效率更高”,但我已经在这个商业40年了,我会在任何一天“易于理解和工作”而不是“有效”。

(当然,这不是剥掉这只猫的唯一方法,而且可能还有其他同样简单的方法,但那是你和其他人发明的。)

(请注意,避免代码必须在if语句的每个人之间决定是否插入“和”。当您反复重复相同的逻辑时,您往往会增加错误并造成维护噩梦。)

答案 1 :(得分:2)

您当前的方法是计算硬币类型的计数,然后立即打印结果。

相反,如果您首先计算所有硬币的计数而不进行任何打印,则可以看到哪个是具有非零计数的最小硬币(因此最后一个要在输出中命名)。使用它,我认为您可以弄清楚如何将计数粘合在一起并打印所需的文本。

答案 2 :(得分:1)

由于您正在学习Java,我不会给您完整的解决方案,但这里有一些方向:

  • 将您的ouptut存储在String变量中,而不是System.out.print逐位存储
  • String中,删除尾随的逗号(如果有的话)(仅在cents == 0nickels > 1的情况下,但后者可能是您的错误)
  • 将最后一个逗号替换为" and",如果有的话
  • 输出String

如果您仍然完全陷入困境,请告诉我们,我相信有人会想出一个现成的解决方案(如果还没有)。