[英]Why does the code show prime and non-prime both answers?
即使在使用標志和中斷之后,我也會從我的 JS 代碼中得到 if 和 else 的結果。 可能的原因是什么?
function myFunction(){
let x = document.getElementById("int").value;
const rootx = Math.sqrt(x);
let textx = "";
let isPrimeX = true;
//checking the prime of x input
for (let i = 2; i<=rootx; i++){
if(x % i === 0 || x<=1 || x>2){
textx += x + " is not a prime number"
let isPrimeX = false;
break;
}
}if(isPrimeX == true){
textx += x + " is a Prime Number";
}
document.getElementById('demo').innerHTML = textx;
}
您在循環中聲明新的isPrimeX
使用這個let isPrimeX = false;
. 它應該只是isPrimeX = false;
您正在重新聲明isPrimeX
像這樣刪除let
function myFunction(){
let x = document.getElementById("int").value;
const rootx = Math.sqrt(x);
let textx = "";
let isPrimeX = true;
//checking the prime of x input
for (let i = 2; i<=rootx; i++){
if(x % i === 0 || x<=1 || x>2){
textx += x + " is not a prime number"
isPrimeX = false;
break;
}
}if(isPrimeX == true){
textx += x + " is a Prime Number";
}
document.getElementById('demo').innerHTML = textx;
}
您正在for
循環內重新創建 isPrimeX 變量,而不僅僅是更改它的值。 您可以刪除循環內的let
,或移動textx += x + " is a Prime Number";
進入一個else
塊。
請嘗試再次將 isPrimeX 的聲明更改為 assignment 並查看
function myFunction(){
let x = document.getElementById("int").value;
const rootx = Math.sqrt(x);
let textx = "";
let isPrimeX = true;
//checking the prime of x input
for (let i = 2; i<=rootx; i++){
if(x % i === 0 || x<=1 || x>2){
textx += x + " is not a prime number"
//Change the let to assignment
isPrimeX = false;
break;
}
}if(isPrimeX == true){
textx += x + " is a Prime Number";
}
document.getElementById('demo').innerHTML = textx;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.