Итак, в основном я учусь в колледже программировать на Java, у меня были первые уроки, и теперь передо мной была поставлена задача создать программу «сортировщика монет» с if и whiles. Целью программы является предоставление ему суммы денег в евро, и предполагается, что она должна быть организована наиболее эффективным образом, с приоритетом более высокой стоимости счетов. Моя программа написана с некоторыми переменными на португальском языке, поэтому я объясню: (double dinheiro;) - это переменная, в которой я храню сумму денег. и затем монеты идут слева направо в списке int кода, начиная с 50 € и заканчивая 1 центом.
Программа работает отлично и делает то, что должна делать для всехобъекты «евро», которые я создаю, где деньги (dinheiro) - это значение типа int (без центов), и до тех пор, пока они не станут, например, 34,50, а это всего лишь 50 центов. Например, он не будет работать для 34,20 или 34,60 или чего-то подобного.
Когда я пытаюсь запустить что-либо с этими значениями, он не выдает никакой ошибки или чего-то подобного, простооставляет программу бесконечно запущенной без вывода (и в итоге занимает 100% процессора и перегревает компьютер).
Я очень устал и некоторое время искал ответ и пытался отладить егосам, но я просто не могу найти, что я сделал неправильно в такой, вероятно, простой вещи, поэтому я очень расстроен.
Спасибо!
public class Euros {
private double dinheiro;
private double n50, n20, n10, n5, m2, m1, m50c, m20c, m10c, m5c, m2c, m1c;
public Euros(double dinheiro) {
this.dinheiro = dinheiro;
}
public void distribuirDinheiro() {
do {
if (dinheiro >= 50) {
dinheiro = dinheiro - 50;
n50 = n50 + 1;
} else if (dinheiro >= 20 && dinheiro < 50) {
dinheiro = dinheiro - 20;
n20 = n20 + 1;
} else if (dinheiro >= 10 && dinheiro < 20) {
dinheiro = dinheiro - 10;
n10 = n10 + 1;
} else if (dinheiro >= 5 && dinheiro < 10) {
dinheiro = dinheiro - 5;
n5 = n5 + 1;
} else if (dinheiro >= 2 && dinheiro < 5) {
dinheiro = dinheiro - 2;
m2 = m2 + 1;
} else if (dinheiro >= 1 && dinheiro < 2) {
dinheiro = dinheiro - 1;
m1 = m1 + 1;
} else if (dinheiro >= 0.5 && dinheiro < 1) {
dinheiro = dinheiro - 0.5;
m50c = m50c + 1;
} else if (dinheiro >= 0.2 && dinheiro < 0.5) {
dinheiro = dinheiro - 0.2;
m20c = m20c + 1;
} else if (dinheiro >= 0.1 && dinheiro < 0.2) {
dinheiro = dinheiro - 0.1;
m10c = m10c + 1;
} else if (dinheiro >= 0.05 && dinheiro < 0.1) {
dinheiro = dinheiro - 0.05;
m5c = m5c + 1;
} else if (dinheiro >= 0.02 && dinheiro < 0.05) {
dinheiro = dinheiro - 0.02;
m2c = m2c + 1;
} else if (dinheiro >= 0.01 && dinheiro < 0.02) {
dinheiro = dinheiro - 0.01;
m1c = m1c + 1;
}
} while (dinheiro > 0);
}