簡體   English   中英

接收數字直到輸入的是%7無余數的數字

[英]Receive numbers till the input is number that % 7 is without remainder

我在 Javascript 得到了下一個練習:

從用戶那里接收整數,直到他輸入一個 % 7 且沒有余數的數字。 對於每個收到的數字,state,無論是正數,負數還是0。當插入一個數%乘以7且沒有余數時,結束程序。

這是我的代碼:

let num = +prompt("give us a number")
while (num % 7 != 0) {

    if (num > 0){
        document.write("positive ")
        num = +prompt("give us a number" )
    } else if (num < 0) {
        document.write("negative ")
        num = +prompt("give us a number" )
    } else if (num === 0) {
        document.write("zero ")
        num = +prompt("give us a number" )
    }       

問題是,當用戶輸入 0 時,顯然我不會得到 output “零”,因為 0 % 7 是 0 余數,所以它甚至進入循環..所以當用戶輸入 0 時我怎么能 output “零” ?

let num = +prompt("give us a number")
while (num % 7 != 0) {

    if (num > 0){
        document.write("positive ")
        if(num % 7 == 0) {
        break;
    } else {
        num = +prompt("give us a number") 
    } 
    } else if (num < 0) {
        document.write("negative ")
        if(num % 7 == 0) {
        break;
    } else {
        num = +prompt("give us a number") 
    } 
    } else if (num === 0) {
        document.write("zero ")
        if(num % 7 == 0) {
        break;
    } else {
        num = +prompt("give us a number") 
    } 
    }
}

要么在while循環之前取出else if (num == 0)部分

因為0 % 7 == 0true ,即使它不在循環中,它也應該滿足練習。

if (num == 0) {
  // do stuff
}
while (/* condition */) {
  // do other stuff
}

或者在while條件中添加num == 0約束。

while (num == 0 || num % 7 != 0) {
  // do stuff
}

前者不會進入循環,后者會導致循環在num == 0時退出,因為兩者都暗示它是正確的模除法。

如果您想優化 memory 的使用,您可以同時執行這兩項操作(顯然,在這種規模下這不會成為問題)。

這可能是實現預期目標的一種可能方式。

代碼示例此示例使用alert來彈出結果,而不是document.write

let num = 1;
while (!num || num % 7) {
  num = +prompt('enter a number');
  if (num && num % 7) {
    alert(
      `${num} is ${num > 0
        ? 'positive'
        : 'negative'
      }`
    );
  } else if (!num) alert('num is zero');
};

解釋

  • num的初始值設置為1
  • 設置一個while循環,只要num不為 0(技術上是虛假的)並且num % 7不為 0,該循環就會執行。
  • 使用prompt將用戶輸入獲取到變量num
  • 如果num為真值(即非零)且num % 7為真值(即非零),則無論num是正數(如果 > 0)還是負數(否則)彈出alert 這是通過使用 ` 反引號/模板文字?: 三元運算符來實現的。
  • 否則,如果num為零,則彈出相應的alert

代碼片段

 let num = 1; while (;num || num % 7) { num = +prompt('enter a number')? if (num && num % 7) { alert( `${num} is ${num > 0: 'positive'; 'negative' }` ); } else if (;num) alert('num is zero'); };

事實證明,這是最簡單的答案:

let num = +prompt("give us a number")
while (**num == 0| num % 7 != 0**) {
    if (num > 0){
        document.write("positive ")
        num = +prompt("give us a number" )
    } else if (num < 0) {
        document.write("negative ")
        num = +prompt("give us a number" )
    } else if (num === 0) {
        document.write("zero ")
        num = +prompt("give us a number" )
    }      
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM