我的输出中有额外的星号

Additional asterisks in my output

我知道增量运算符 = ++i 是 shorthand for i = i +1
而减量运算符的 shorthand 是 --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,我是否有必要输入 numStars = numStars * numPrinted?因为我觉得这可能是我的输出中有两个额外星号而不仅仅是 12 个星号的原因。除非因为我决定增加 numPrinted?

而有额外的两个星号

在此先感谢您的帮助和建议。

你用什么语言编写代码?

你可以试试:

  numStars = 12;
  numPrinted = 0;

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

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

从0开始数,否则打印11个星号。

您的循环将继续,直到 numPrinted 大于或等于 numStars。

如果您知道需要 12 个循环,则不应更改 numStars 的值,而应仅更改 numPrinted 的值。

此外,numPrinted 不应从 1 开始。这将导致 11 星。

构造循环的正确方法(如果您希望使用 while 循环而不是 for 循环)如下:

  numStars = 12;
  numPrinted = 0;

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

星星数 = 12; numPrinted = 1;

  while (numPrinted <= numStars) {      
     numPrinted = numPrinted + 1;      
     cout << "*";
  }  

我正在编写 C++,值 numPrinted = 1,numStars 的值是循环次数。这个循环 12 次并在行中打印 12 个星号。