2017-09-27 2 views
-1

増分演算子= ++ iはi = i +1の短縮形であることを知っています+1減算演算子の短縮形は - i(減分演算子はi = i -1)ですが、
です。 )。私の出力にアスタリスクが追加されています

この場合、numStarsに対して一定量のアスタリスクを印刷しようとしているため、増分演算子(i = i + 1)を使用しました。 numPrinted = numPrinted + 1をインクリメントするのに行った。ここでは、コードを簡単に一目で:

numStars = 12; 
    numPrinted = 1; 

    while (numPrinted < numStars) { 
    numStars = numStars * numPrinted; 
    numPrinted = numPrinted + 1; //Went for increment since I'm assuming 
    additional asterisks will be shown 

    System.out.print("*"); /* My output produces a total of 14 asterisks 
    whereas the expected output wants 12 asterisks */ 

    } 

見て予想される出力は12とnumStars = 12であることを既に、numPrintedは* numStarsの=のnumStarsを置くために私のことが必要でしたか?なぜなら、12アスタリスクではなく、出力にアスタリスクを2つ追加する理由があると思うからです。 numPrintedを増やすという私の決定のために、余分な2つのアスタリスクがそこにある場合を除きますか?

ご協力いただき、ありがとうございます。

+0

いいえ、あなたは定数として 'numStars'を扱うべきである、と確かに 'numPrinted'でそれを掛けてはいけません。また、 'while'ループを' for'ループに変更する必要があります。 – Andreas

+0

[デバッガとはどのようにして問題を診断するのに役立ちますか?](https://stackoverflow.com/q/25385173/5221149) – Andreas

答えて

0

ループはnumPrintedがnumStars以上になるまで続きます。

12ループが必要な場合は、numStrintの値を変更しないでください(numPrintedのみ)。

さらに、numPrintedは1から始めるべきではありません。これにより11個の星が得られます。

次のようにループを構築する正しい方法、(あなたの代わりにforループのwhileループを使用する必要がありますが)です:

numStars = 12; 
    numPrinted = 0; 

    while (numPrinted < numStars) { 
    numPrinted = numPrinted + 1; 
    System.out.print("*"); 
    } 
+0

したがって、12個のアスタリスクの予想される出力を生成するには、numStarsを同じ値に保つ必要があります。ここで提案したように、numPrintedの値を1から0に変更しようとしました。しかし、この演習では、デフォルトの数値を変更することはできません(それが理にかなっている場合)。むしろ、私はwhileループを変更させるだけです。 numPrinted = 0でも12個のアスタリスクを生成することは可能でしょうか? – acruz30

+0

whileループの条件を変更できますか? "while(numPrinted user3362196

+0

ありがとうございます。<から<=に変更したときに12個のアスタリスクを出力できました。あなたが気にしない場合は、それを<=に変更すると、アスタリスク12個の正確な量を得ることができましたか?そして、将来のコーディングのために<ではなく<を使用して練習する必要がありますか? – acruz30

-1

どの言語でコーディングしていますか?

あなたは試すことができます:0から数え

numStars = 12; 
    numPrinted = 0; 

    while (numPrinted < numStars) { 
    numPrinted = numPrinted + 1; //increment by one 

    System.out.print("*"); /* Print one asterisk */ 
    } 

スタート、そうでない場合は11個のアスタリスクが印刷されます。

+0

私はJavaでコーディングしています。別のユーザーが先に進み、numPrintedに値として0を割り当てるように提案しました。しかし、この演習では私のwhileループを修正することしかできず、numPrinted = 1などのデフォルト値を変更することはできません。運動の中で。 numPrintedが1から始まっても12のアスタリスクを印刷する方法はありますか? – acruz30

+0

はい、 'while(numPrinted <= numStars)'または 'while(numPrinted Enis

関連する問題