虽然循环输出不正确

时间:2018-05-30 07:42:51

标签: javascript

我正忙着练习和以下问题:

while循环:

循环显示数字1到20

  • 如果数字可被3整除,请打印“Julia”
  • 如果该数字可被5整除,则打印“James”
  • 如果数字可以被3和5整除,请打印“JuliaJames”
  • 如果数字不能被3或5整除,请打印数字

我一直在提交答案,但它告诉我,我的while循环条件不正确,有什么我做错了吗?

var x = 1;

while (x <= 20) {
    if (x/3 === 0) {
        console.log("julia" );
    }                        // check divisibility
    else if (x/5 === 0) {
        console.log("james");
    }
    else if (x/5 === 0 && x/3 === 0 ) {
        console.log("juiliajames");
    }                        // print Julia, James, or JuliaJames
    else {
        console.log(x); 
    }
    x= x + 1;// increment x
}

5 个答案:

答案 0 :(得分:1)

您需要使用Modulus (%)代替divide (/)。并将x % 5 === 0 && x % 3 === 0作为您的第一个条件。

更改您的代码,如下所示。

&#13;
&#13;
var x = 1;

while (x <= 20) {

  if (x % 5 === 0 && x % 3 === 0) {
    console.log("juiliajames");
  } // print Julia, James, or JuliaJames
  else if (x % 3 === 0) {
    console.log("julia");
  } // check divisibility
  else if (x % 5 === 0) {
    console.log("james");
  } else {
    console.log(x);
  }
  x = x + 1; // increment x
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

var x = 1;

while (x <= 20) {
if(x%3 === 0 && x%5 === 0 ){
console.log("juiliajames" );
}                        // check divisibility
else if(x%3 === 0){
console.log("juilia");
}
else if (x%5 === 0){
console.log("james");
}                           // print Julia, James, or JuliaJames
else{
console.log(x); 
}
x= x + 1;// increment x
}

如果您想检查可分性,则应使用%运算符代替/运算符。

答案 2 :(得分:0)

  • 检查x在开始时可以被5和3整除,或者它永远不会被完成,因为如果它可以被3整除,那么你的循环就不会转到else if语句。
  • 要检查可分性,请使用modulox/3 === 0x = 0

&#13;
&#13;
var x = 1;

while (x <= 20) {
    if(x%5 === 0 && x%3 === 0){
    console.log("juiliajames" );
    }                        
    else if(x%5 === 0){
    console.log("james");
    }
    else if (x%3 === 0 ){
    console.log("juilia");
    }                           
    else{
    console.log(x); 
    }
    x= x + 1;// increment x
}
&#13;
&#13;
&#13;

答案 3 :(得分:0)

我的方法通过在整数上设置按位标志来工作。如果它可以被三整除(值%3 === 0,其中%是'modulo',它给出了除法的整数余数)第一位被置位,如果它可被5整除,则第二位被置位。这给出了可以具有三个二进制值01,10或11,或者在十进制1,2和2中的结果。 3(设置两个位时会出现三个)。

var DIVISABLE_BY_THREE = 1;
var DIVISABLE_BY_FIVE = 2;
var DIVISABLE_BY_THREE_AND_FIVE = 3;
var value = 0;

while(value++ < 20) {
	var modulo_3 =  (value % 3 === 0) | 0;
	var modulo_5 = ((value % 5 === 0) | 0) << 1;
	
	switch(modulo_3 | modulo_5) {
		case DIVISABLE_BY_THREE:
			console.log("Julia");
		break;
		
		case DIVISABLE_BY_FIVE:
			console.log("James");
		break;
		
		case DIVISABLE_BY_THREE_AND_FIVE:
			console.log("JuliaJames");
		break;
		
		default:
			console.log(value);
		break;
	}
}

答案 4 :(得分:0)

&#13;
&#13;
var x = 1;

while (x <= 20) {
  var name ="";
  
  if (x % 3 == 0) {
    name = name + "julia";
  } 
  
  if (x % 5 == 0) {
    name = name + "james";
  }
  
  if(name.length > 0)
	console.log(name);  
  else
	console.log(x);
  x++;
}
&#13;
&#13;
&#13;