试图在Javascript

时间:2016-12-01 12:39:18

标签: javascript

我试图在Javascript中练习循环。我有一个程序要求上周的温度,然后计算出其平均值,并根据结果打印文本。如果输入的数字不在-30和40之间,我已添加到其中以返回错误并停止循环。除了我仍然得到基于平均值的其他文本之外,这可以正常工作。我知道像我一样使用break仍然会继续循环之后的其余代码,这就是为什么我仍然得到其他文本。我刚刚开始基础知识,所以它应该尽可能简单。我怎么能这样做以免得到其他文本,我应该使用什么呢?

<meta charset="UTF-8">
<title>Lämpötilat</title>
<script language="JavaScript">

var lampotila=0; 
var i;

for (var i = 0; i < 7; i++) {
  lampotila = Number(prompt("Enter the temperatures for the last 7 days"));

  if(lampotila <-31 || lampotila > 40) {
    document.write ("ERROR: You must enter a temperature between -30° and 40°"); 
    {break;}
  }
}

yht = yht + lampotila;
k = yht / 7
ki = k.toFixed(2);

if (ki < -10) {
  document.write ("Kylmää talvisäätä!");// cold winter weather
}
else if (ki <0 && ki> -10) {
  document.write ("Hyvä hiihtosää!");// good skiing weather
}
else if (ki >0 && ki <10) {
  document.write ("Kevät tulossa!");// spring is coming
}
else {
  document.write("T-paita vois riittää!");// t- shirt should be enough
}


</script>

3 个答案:

答案 0 :(得分:1)

增加缩进可能有助于使代码更易读,更容易检测错误和错误。

http://www.w3schools.com/js/js_break.asp我们知道break;让我们摆脱了循环。因此,在中断之后,不会再在该循环内进行迭代,并且计算机将继续执行该循环之后的内容。

代码的第二部分在循环之外,因此在循环中执行break不会影响其余部分。您可以使用一个变量来指示在输入数据时是否发现错误。如果是这样,那么不要执行剩下的代码。

这样的事情:

var lampotila=0; 
// var i; <= You don't need this if you `var i=0` inside the foor loop. 
// Also, you don't use i outside the loop so there is no need 
// to have it declared in the global scope.
var error = false; // <== THIS LINE NEW

for(var i=0; i<7;i++){
  lampotila=Number(prompt("Enter the temperatures for the last 7 days"));
  if(lampotila <-31 || lampotila > 40) {
    document.write ("ERROR: You must enter a temperature between -30° and 40°");
    error = true; // <== THIS LINE NEW
    break;
  }
}

if (!error) { // <== THIS LINE NEW
    yht=yht+lampotila;
    k=yht/7
    ki=k.toFixed (2);


    if (ki < -10){
      document.write ("Kylmää talvisäätä!");// cold winter weather
    }
    else if(ki <0 && ki> -10) {
      document.write ("Hyvä hiihtosää!");// good skiing weather
    }
    else if (ki >0 && ki <10) {
      document.write ("Kevät tulossa!");// spring is coming
    }
    else {
      document.write("T-paita vois riittää!");// t- shirt should be enough
    }
} // <== THIS LINE NEW

答案 1 :(得分:0)

你可以在休息前减少i值。因此,用户必须输入真实的温度值。

if(lampotila <-31 || lampotila > 40) {
document.write ("ERROR: You must enter a temperature between -30° and 40°");
i = i - 1;
continue;
}}

答案 2 :(得分:0)

您在下面的行中有语法错误:

{break;}

试试这个:

for (var i = 0; i < 7; i++) {

    lampotila = Number(prompt("Enter the temperatures for the last 7 days"));

    if (lampotila < -31 || lampotila > 40) {
        document.write("ERROR: You must enter a temperature between -30° and 40°");
        break;
    }

    yht = yht + lampotila;
    k = yht / 7
    ki = k.toFixed(2);

    if (ki < -10) {
        document.write("Kylmää talvisäätä!"); // cold winter weather
    } else if (ki < 0 && ki > -10) {
        document.write("Hyvä hiihtosää!"); // good skiing weather
    } else if (ki > 0 && ki < 10) {
        document.write("Kevät tulossa!"); // spring is coming
    } else {
        document.write("T-paita vois riittää!"); // t- shirt should be enough
    }
}