Так что, делая программу для оценки, выступающей в роли торгового автомата, спрашивает, сколько банков вы хотите приобрести, а затем вычисляет значения, запрашивает ввод монет (при условии, что пользователь будучи разумным), а затем пытается рассчитать данное изменение.программа, заканчивающаяся до того, как она должна быть завершена
Проблема я Бежит в том, что после того, как программа считывает значения для оплаты и вычисляет, если она достаточно со следующим:
double coins[] = new double[]{2.00,1.00,0.50,0.20,0.10,0.05};
//A while loop so that it continues to go until the payment is equal or more than the cost
int count2 = 1;
while (payment <= totalCost){
if (payment == totalCost){
System.out.println("You have entered the exact amount of change! Thankyou.");
break;
}
System.out.println("Please enter more coins: ");
coinsIn[count2] = kbd.nextDouble();
payment = payment + coinsIn[count2];
count2++;
}
Это просто завершает программу.
Проблема заключается в том, что непосредственно после того, что в то время как цикл у меня есть этот образец кода
double change = payment - totalCost;
int count3 = 0;
if ((change == coins[count3]) && (count3 <6)) {
System.out.println("Your change is: ");
System.out.println(change);
}
else{
count3++;
}
Это должно бежать, но просто нет.
Например, общая стоимость составляет 4,50 доллара США, и я вхожу в 2 x 2,00 и 1x 1,00, она должна проходить через этот цикл if и обнаруживать, что в монетах [] значение 0,50 при монетах [2], тогда распечатайте сообщение для изменения и затем закройте.
Это рабочий пример в терминале:
Please enter the amount of cans that you would like to purchase:
1
Please enter the amount of cans that you would like to purchase:
1
Please enter the amount of cans that you would like to purchase:
1
There are currently [297] cans remaining.
The total cost of your purchase is [$4.5].
Please enter your payment now:
2.00
Please enter more coins:
2.00
Please enter more coins:
1.00
Это только заканчивается сразу же после этого 1.00,
Я не понимаю, что здесь происходит.
Любая помощь будет высоко оценена.
P.S. Все прекрасно компилируется.
Рассмотрите возможность предоставления [runnable example] (https://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. Это не дамп кода, а пример того, что вы делаете, что подчеркивает проблему, с которой вы сталкиваетесь. Это приведет к меньшему путанице и лучшим ответам. – MadProgrammer
Запустите свой код под отладчиком, и вы увидите пошаговый ход и изучите свои переменные. –
похоже, что одна проблема заключается в том, что count3 не увеличивается правильно. Это должно было быть в цикле while, чтобы приращение в конце повлияло на более раннее условие. Кроме того, нет объявления для массива под названием «монеты», поэтому трудно понять, что вы пытаетесь сделать. –