使 continue 语句在 do while 循环中工作

Posted

技术标签:

【中文标题】使 continue 语句在 do while 循环中工作【英文标题】:Making continue statement work in a do while loop 【发布时间】:2017-04-07 20:15:25 【问题描述】:

我需要帮助使我的 continue 语句在 do-while 循环中工作。如果一天中的时间无效,我想忽略卡片的数量,然后转到循环的下一个迭代。 现在,如果我没有输入 'Morning'、'Afternoon' 或 'Evening' 作为 'time',则循环结束。

这是我的代码:

// DECLARE VARIABLES
var time; // timestamp on batch
var count; // number of cards in batch
var repeat; // whether or not the program will repeat
var m = 0; // initial number of Morning cards
var a = 0; // initial number of Afternoon cards
var e = 0; // initial number of Evening cards
var total = 0; // initial number of all cards

//START LOOP
do 
  time = prompt("Is the batch's timestamp 'Morning', 'Afternoon' or 'Evening'?"); // Input value for time
  count = prompt("How many cards are in this batch?"); // Input value for count
  count = parseFloat(count); // return 'count' as a number

  total = total + count; // calculate total number of cards

  if (time == "Morning") 
    m = m + count; // if time is 'Morning', add the # of the cards from this batch to the # of cards from all 'Morning' batches
   else if (time == "Afternoon") 
    a = a + count; // if time is 'Afternoon', add the # of the cards from this batch to the # of cards from all 'Afternoon' batches
   else if (time == "Evening") 
    e = e + count; // if time is 'Evening', add the # of the cards from this batch to the # of cards from all 'Evening' batches
   else 
    continue;
  

  repeat = prompt("Do you have more batches to enter? Enter 'Y' or 'N'"); // User chooses whether to end the loop
 while (repeat == "Y");

// DISPLAY RESULTS
document.write("Total number of cards: " + total + "<br/>");
document.write("Morning cards: " + m + "<br/>");
document.write("Afternoon cards: " + a + "<br/>");
document.write("Evening cards: " + e);

PS:这是给我的电脑课的。这是我们的活动: “在这个任务中,你将伪编码一个算法,该算法按一天中的时间累积客户调查卡。你需要询问用户一天中的时间(早上、下午和晚上)以及卡片的数量该批次。用户需要能够在一天中的同一时间输入多个批次。您将需要在循环中使用单独的累加器来跟踪卡片,因为循环继续其迭代。”

【问题讨论】:

看来你只需要将var repeat初始化为"Y" 尝试重新表述您的要求——“如果我的时间有效,我想......”然后您可能会重新构建条件逻辑并找到问题的答案。 @Emily 你了解调试器的使用了吗?如果你逐行浏览你的代码,我想你会看到你的问题 【参考方案1】:

问题是您的while 条件失败。如果用户输入了一个非值输入,那么 continue 会被命中并且你的代码会跳下来评估条件while (repeat == 'Y')

此时,repeat 等于 null,因为从未调用过更改它的提示。

因为null != 'Y' 你的循环结束了

【讨论】:

为什么还要继续?

以上是关于使 continue 语句在 do while 循环中工作的主要内容,如果未能解决你的问题,请参考以下文章

Java中的结构语句

4_while循环结构和break&continue

continue,break;

C语言的break和continue语句

C语言的break和continue语句

循环语句中,break语句和continue语句有何不同