1. ホーム
  2. javascript

[解決済み] コーデの棚卸し。このコードで間違っていることは何ですか?

2022-02-12 05:15:51

質問

このコードで長い間作業していますが、何が間違っているのかまだ分かりません...チェックコードをクリックすると、こう表示されます。

  1. 25個のアイテムを削除しても、インベントリにはまだ20個のアイテムが残っているはずです。
  2. 20個のアイテムを削除したら、"All Out!"と表示されるはずです。

が、私のコードはどちらの状況でも動作しています。そこで、私のコードを紹介します。

var STARTING_ITEMS_IN_INVENTORY = 20;



   function start(){

    var numItems = STARTING_ITEMS_IN_INVENTORY; 
    
    
    while(numItems>0 ){
        
    println("We have "+numItems+" items in inventory");
    
    
    var number=readInt("How many would you like to buy?");
    numItems-=number;
    
    if(numItems>0){
    println("Now we have "+numItems+" left");
    println("");
    }
    
    if(numItems==0){
        println("");
        println("All Out!");
    }else if(numItems<0){
        
        println("There is not enough in inventory for that purchase");
       
    }
    
    }
}

この問題で私を助けてください

どのように解決するのですか?

投稿にタグを付けました javascript が、あなたのコードはそうではありません。 きっと明日の宿題だな...。

あなたのコードをjsのニーズに合わせて書き直しました。

var STARTING_ITEMS_IN_INVENTORY = 20;

function start() {
  
    var numItems = STARTING_ITEMS_IN_INVENTORY;
  
    while (numItems > 0) {
        alert("We have " + numItems + " items in inventory");
        var number = prompt("How many would you like to buy?");
        numItems -= number;

        if (numItems > 0) {
            alert("Now we have " + numItems + " left");
        } else if (numItems == 0) {
            alert("All Out!");
        } else if (numItems < 0) {
            alert("There is not enough in inventory for that purchase");
        }
    }
}

start();

アルゴリズムとjsがどのように動作するかを理解するために、このコードを修正することをお勧めします。

var STARTING_ITEMS_IN_INVENTORY = 20;

function start() {

    var numItems = STARTING_ITEMS_IN_INVENTORY;

    while (numItems > 0) {
        var number = prompt("How many would you like to buy? (" + numItems + " left)");
        
        if (numItems - number > 0) {
            numItems -= number;
        } else if (numItems - number == 0) {
            numItems -= number;
        } else if (numItems - number < 0) {
            alert("There is not enough in inventory for that purchase, please retry");
        }
    }
    alert("All Out!");
}

start();

アドバイスと情報。

  • readLn()printLn() は、javascript のコア関数ではありません。
  • を使うべきではありません。 prompt() また alert() そのために
  • numItems に代入する前に、インベントリの将来のアイテム数をチェックします。
  • 読む https://www.w3schools.com/js/DEFAULT.asp