如何确定表示输入金额所需的每种不同硬币的最少数量?

时间:2016-09-16 01:10:53

标签: java

我对编程非常陌生,而我在使用这个程序时遇到麻烦,该程序希望用户输入一些名为novas的“外星硬币”,然后确定代表该金额所需的每个不同外星硬币的最少数量,从最高点开始。以下是硬币及其价值:

  • 1 aurora = 60 pulsars
  • 1脉冲星= 70引力子
  • 1引力子= 6 novas

以下是一个示例输入和输出示例:

Enter number of novas: 64197 [Enter]
That number of novas is equal to: 
2 auroras 
32 pulsars 
59 gravitons 
3 novas 

这是我的代码:

import java.util.Scanner; 

public class AlienMoney {
    public static void main(String[] args){
        int startAmount, amount, auroras, pulsars, gravitons, novas; 
        Scanner input = new Scanner(System.in);
        System.out.print("Enter number of novas: ");
        amount = input.nextInt();
        System.out.println("That number of novas is equal to: ");

        startAmount = amount;
        gravitons = amount / 6;
        amount = amount % 6;
        pulsars = amount / 70;
        amount = amount % 70;
        auroras = amount / 60;
        amount = amount % 60;
        novas = amount;

        System.out.println(auroras + " auroras");
        System.out.println(pulsars + " pulsars");
        System.out.println(gravitons + " gravitons");
        System.out.println(novas + " novas");


    }
}

这是我的输出:

Enter number of novas: 64197 [Enter]
That number of novas is equal to: 
0 auroras 
0 pulsars 
10699 gravitons 
3 novas 

我不确定我做错了什么。我知道我必须使用模数运算符%来得到余数,但我不知道在那之后该怎么做。我非常感谢任何人的帮助。谢谢。

3 个答案:

答案 0 :(得分:1)

您需要从最大的订单开始按正确的顺序计算货币。

所以: 极光>脉冲星>引力子>新星

而不是: 引力子>脉冲星>极光>新星

答案 1 :(得分:0)

下面的代码片段中的方法是计算三个硬币中每个硬币的数量,然后计算每个硬币用于表示输入金额的数量。

为了使用最少数量的硬币,我们应该首先使用尽可能多的极光,其余为脉冲星,然后使用引力子。

Parse error: syntax error, unexpected ':', expecting ';' or '{' in /myproject/app/cache/dev/appDevDebugProjectContainer.php on line 20043

答案 2 :(得分:-1)

就在这里,评论中指出问题行:

startAmount = amount;
gravitons = amount / 6;
amount = amount % 6;
pulsars = amount / 70; // <-- starts here
amount = amount % 70;
auroras = amount / 60;
amount = amount % 60;
novas = amount;

您正在使用错误的变量。请使用您指定所需金额的变量,例如:

startAmount = amount;
gravitons = amount / 6;
amount %= 6;
pulsars = gravitons / 70;
gravitons %= 70;
auroras = pulsars / 60;
pulsars %= 60;
novas = amount; // this doesn't need to change but there's no need to assign amount into a new variable

还使用%=运算符。这很酷。 ;)