2016-03-07 3 views
-3

Вот мой код. Я сейчас застрял в бесконечном цикле. Программа должна запросить количество бутылок, собранных за каждый день, в 7 раз. Таким образом, цикл должен повторяться 7 раз. Затем я должен отображать общее количество бутылок и общую сумму каждой бутылки (которая умножается, но 0,10) в конце.Пока Loop в JavaScript, застрял в бесконечном цикле

function main() { 
    alert("Welcome to the program"); 
    var totalBottles = 0; 
    var todayBottles = 0; 
    var totalPayout = 0; 
    var keepGoing = "y"; 
    var counter = 1; 
    while (keepGoing == "y") 
     getBottles(totalBottles, todayBottles, counter); 
    calcPayout(totalPayout, totalBottles); 
    printInfo(totalBottles, totalPayout); 
    keepGoing = prompt("Do you want to keep going? Enter y for yes"); 
} 

function getBottles(totalBottles, todayBottles, counter) { 
    while (counter < 7) { 
     todayBottles = prompt("Enter the number of bottles returned for the day"); 
     totalBottles = (totalBottles + todayBottles); 
     counter = (counter + 1); 
    } 
} 

function calcPayout(totalPayout, totalBottles) { 
    totalPayout = 0; 
    totalPayout = (totalBottles * 0.10); 
} 

function printInfo(totalBottles, totalPayout) { 
    alert("The total number of bottles returned is", totalBottles); 
    alert("The total paid out is", totalPayout); 
} 
//calls main 
main(); 
alert("End of program"); 
+4

Вам не хватает '{}' вокруг тела цикла while в первой функции. Научитесь использовать отступы для уточнения структуры кода. – Pointy

+0

Вот почему правильное форматирование чрезвычайно важно. Пожалуйста, будьте внимательнее. – ndugger

+0

Я новичок в программировании, и я никогда даже не блистал к таким вещам, поэтому я прошу помощи. Я не уверен, что я ищу, когда валидатор говорит, что мой код прав, но моя программа не выполняется. –

ответ

0

// попробуйте понять, что он делает, и почему ваш код не печатал правильную информацию.

function main() { 
    alert("Welcome to the program"); 

    var totalBottles = 0; 
    var todayBottles = 0; 
    var totalPayout = 0; 
    var keepGoing = "y"; 
    var counter = 1; 

    while (keepGoing == "y") { 
     totalBottles = getBottles(totalBottles, todayBottles, counter); 
     totalPayout = calcPayout(totalPayout, totalBottles); 
     printInfo(totalBottles, totalPayout); 
     keepGoing = prompt("Do you want to keep going? Enter y for yes"); 
    } 
} 


function getBottles(totalBottles, todayBottles, counter) { 
    while (counter < 7) { 
     todayBottles = prompt("Enter the number of bottles returned for the day"); 
     //alert(todayBottles); 
     totalBottles += parseInt(todayBottles); 
     //alert(totalBottles); 
     counter = (counter + 1); 
    } 
    return totalBottles; 
} 

function calcPayout(totalPayout, totalBottles) { 
    totalPayout = 0; 
    totalPayout = (totalBottles * 0.10); 
    return totalPayout; 
} 

function printInfo(totalBottles, totalPayout) { 
    alert("The total number of bottles returned is " + totalBottles); 
    alert("The total paid out is " + totalPayout); 
} 

//calls main 
main(); 
alert("End of program"); 
+0

Спасибо! У меня теперь проблема с возвратом значений? Когда я пытаюсь вернуть туда, это просто разрушает все. Как бы я позволил этому сохранить и передать значения, чтобы он вычислил в конце? –

+0

Большое спасибо Заин. Я новичок, пытаясь узнать все, что могу! –

0

просто положить {после того, как время (keepGoing == "у") потому, что в соответствии с вашим кодом ваше тело цикла, а содержит только одну строку getBottles (totalBottles, todayBottles, счетчик); , так что ваша программа застряла на этой строке, так как keepGoing всегда True

Смежные вопросы