Java 如何把钱兑换成零钱

Java 如何把钱兑换成零钱,java,Java,尝试将输入的数字转换为25美分、5美分、10美分和1美分。有一些问题: public class Coins { public static void main(String[] args){ private int quarters, dimes, nickels, pennies; public void CoinsToChange(TotalCoins){ quarters = (int)(TotalCoins/25); TotalCoins %= 25;

尝试将输入的数字转换为25美分、5美分、10美分和1美分。有一些问题:

    public class Coins {
public static void main(String[] args){

private int quarters, dimes, nickels, pennies;

public void CoinsToChange(TotalCoins){
    quarters = (int)(TotalCoins/25);
    TotalCoins %= 25;
    dimes = (int)(TotalCoins/10);
    TotalCoins %= 10;
    nickels = (int)(TotalCoins/5);
    TotalCoins %= 5;
    pennies = (int)(TotalCoins/1);
    TotalCoins %= 1;

    System.out.println("Quarters = " + quarters + "\nDimes = " + dimes + "\nNickels = " + nickels + "\nPennies = " + pennies);
    }
}
    }
这是我的tester类:(调用CoinsTotChange方法时遇到问题。)


}尝试更改操作顺序。在声明/实例化对象/变量之前,通常不能使用该对象/变量

Coins money = new Coins();
Scanner kybd = new Scanner(System.in);
int changeMoney = kybd.nextInt();
money.CoinsToChange(changeMoney);

有很多语法问题,但您的总体计算是正确的。试着这样做:

public class Coins {
    public static void main(String[] args) {
        Scanner kybd = new Scanner(System.in);
        int totalPennies = kybd.nextInt();
        printMoneyAsChange(totalPennies);
    }

    public static void printMoneyAsChange(int pennies) {
        int quarters = pennies / 25;
        pennies %= 25;

        int dimes = pennies / 10;
        pennies %= 10;

        int nickels = pennies / 5;
        pennies %= 5;

        System.out.println(String.format("Quarters = %d\nDimes = %d\nNickels = %d\nPennies = %d", quarters, dimes, nickels, pennies));
    }
}

这些就是问题:

  • 在Coins类中,您尝试将所有内容封装在main方法中。您需要分别声明方法和变量,然后在main方法中调用它们。
  • 与其在Coins类中创建主方法,不如在tester类中创建主方法。
  • 使用参数声明方法时,需要指定类型。因此,它应该是
    public void CoinsToChange(inttotalcoins)
    ,而不是
    public void CoinsToChange(inttotalcoins)
  • 最后,在tester类中,在
    int changeMoney=kybd.nextInt()中声明和分配
    changeMoney
    之前,您调用了
    money.CoinsToChange(changeMoney)
    。你需要把那条线放在后面而不是前面
进行尽可能少的更改后,我使您的代码能够像这样工作:

public class Coins {

    private int quarters, dimes, nickels, pennies;

    public void CoinsToChange(int TotalCoins) {
        quarters = (int) (TotalCoins / 25);
        TotalCoins %= 25;
        dimes = (int) (TotalCoins / 10);
        TotalCoins %= 10;
        nickels = (int) (TotalCoins / 5);
        TotalCoins %= 5;
        pennies = (int) (TotalCoins / 1);
        TotalCoins %= 1;

        System.out.println("Quarters = " + quarters + "\nDimes = " + dimes
                + "\nNickels = " + nickels + "\nPennies = " + pennies);
    }
}
测试仪等级:

 import java.util.Scanner;

    public class CoinsTester {

        public static void main(String[] args) {
            Coins money = new Coins();
            Scanner kybd = new Scanner(System.in);
            int changeMoney = kybd.nextInt();
            money.CoinsToChange(changeMoney); // This line needs to be at the bottom
        }
    }

注意:其他一些答案也为您提供了一些很好的建议,涉及更好的变量名和字符串格式的使用。最好接受他们的建议。我特别想解决编译器错误。

据我所见,所提供的代码存在大量问题

在您的第一个代码示例中,您将在中引入函数声明和私有字段

公共静态void main(字符串[]args){}

,因此您的类将不会编译,因此您将无法从其他类中使用它

然后,在将变量声明为@Tank(在他的回答中建议的)之前,您正在使用该变量


坚持公认的命名约定和格式也是一种很好的做法

你说你有问题,但你没有说问题是什么。在我看来,这不像是JavaScript,重新标记它。这个“公共void CoinsToChange(TotalCoins)”甚至不应该用java编译
 import java.util.Scanner;

    public class CoinsTester {

        public static void main(String[] args) {
            Coins money = new Coins();
            Scanner kybd = new Scanner(System.in);
            int changeMoney = kybd.nextInt();
            money.CoinsToChange(changeMoney); // This line needs to be at the bottom
        }
    }