亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

控制不會停止接受輸入,并且正在無限循環中運行

控制不會停止接受輸入,并且正在無限循環中運行

浮云間 2023-07-06 10:06:41
在下面的程序中,我創建了兩個文件,一個是導出模塊,另一個文件是在 switch case 中使用該模塊,我的目標是使用 switch case 制作一個基本的計算器程序,其中允許用戶輸入超過有一次,為了做到這一點,我使用了一個無限的 while 循環,但問題是在 while(1) 之后的 Prompt.get() 行,程序的控制沒有停止從用戶那里獲取輸入,并且它繼續無限循環。為了具體指出該行,我對其發表了評論。數學.jsmodule.exports={    add:function(a,b)    {        return a+b;    },    sub: (a,b)=> a-b,    divide: (a,b) => a/b,    multiply: (a,b) => a*b}'another js file.'            const math=require('./math');    const prompt=require('prompt');    prompt.start();console.log("\n1.Add\n2.Substract\n3.Divide\n4.Multiply\n5.Exit\nEnter your choice (1-5):\n");    while(1)    {      //here control of program is not stopping to take input and it continuously going on in a infinite loop        prompt.get([{            name: 'firstNumber',            type: 'number'        },{            name: 'secondNumber',            type: 'number'        }],function(err,result){            if(err) {onErr(err);}            prompt.get({                name:'choice',                type: 'number'            },function(err,result){                if(err){ onErr(err)}                switch(result.choice)                {                    case 1:              console.log("sum is "+math.add(result.firstNumber,result.secondNumber));                    break;                    case 2:                                    console.log(`Substraction is ${math.sub(result.firstNumber,result.secondNumber)}`);                    break;                    case 3:                                     console.log(`Division is ${math.divide(result.firstNumber,result.secondNumber)}`);                    break;                    case 4:       console.log(`multiplication is ${math.multiply(result.firstNumber,result.secondNumber)}`)                    break;                    case 5: process.exit(0);                    default: console.log("You had entered invalid choice.");                    break;                }            })        });
查看完整描述

1 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

While 循環進入無限循環,因為傳入的值始終為 true。根據您的要求,我建議使用遞歸。我在下面粘貼工作代碼。讓我知道它是否有效。


const math = require('./math');

const prompt = require('prompt');

prompt.start();

console.log("\n1.Add\n2.Substract\n3.Divide\n4.Multiply\n5.Exit\nEnter your choice (1-5):\n");


takeInputs()


function takeInputs () {

  prompt.get([{

    name: 'firstNumber',

    type: 'number'

  }, {

    name: 'secondNumber',

    type: 'number'

  }], function (err, result) {

    if (err) { onErr(err); }

    prompt.get({

      name: 'choice',

      type: 'number'

    }, function (err, data) {

      if (err) { onErr(err) }

      switch (data.choice) {

        case 1:

          console.log("sum is " + math.add(result.firstNumber, result.secondNumber));

          return takeInputs()

        case 2:

          console.log(`Substraction is ${math.sub(result.firstNumber, result.secondNumber)}`);

          return takeInputs()

        case 3:

          console.log(`Division is ${math.divide(result.firstNumber, result.secondNumber)}`);

          return takeInputs()

        case 4:

          console.log(`multiplication is ${math.multiply(result.firstNumber, result.secondNumber)}`)

          return takeInputs()

        case 5: process.exit(0);

        default: console.log("You had entered invalid choice.");

          return takeInputs()

      }

    })

  });

}


function onErr (err) {

  console.log(err);

  return 1

}



查看完整回答
反對 回復 2023-07-06
  • 1 回答
  • 0 關注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號