2015-03-23 3 views
0

Так что, делая программу для оценки, выступающей в роли торгового автомата, спрашивает, сколько банков вы хотите приобрести, а затем вычисляет значения, запрашивает ввод монет (при условии, что пользователь будучи разумным), а затем пытается рассчитать данное изменение.программа, заканчивающаяся до того, как она должна быть завершена

Проблема я Бежит в том, что после того, как программа считывает значения для оплаты и вычисляет, если она достаточно со следующим:

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. Все прекрасно компилируется.

+0

Рассмотрите возможность предоставления [runnable example] (https://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. Это не дамп кода, а пример того, что вы делаете, что подчеркивает проблему, с которой вы сталкиваетесь. Это приведет к меньшему путанице и лучшим ответам. – MadProgrammer

+0

Запустите свой код под отладчиком, и вы увидите пошаговый ход и изучите свои переменные. –

+0

похоже, что одна проблема заключается в том, что count3 не увеличивается правильно. Это должно было быть в цикле while, чтобы приращение в конце повлияло на более раннее условие. Кроме того, нет объявления для массива под названием «монеты», поэтому трудно понять, что вы пытаетесь сделать. –

ответ

0

Попробуйте изменить инициализацию переменной count3. Вы уверены, что используете count3?