代码之家  ›  专栏  ›  技术社区  ›  acruz30

输出中的其他星号

  •  -1
  • acruz30  · 技术社区  · 7 年前


      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而有额外的两个星号?

    提前感谢您在这里提供的帮助和建议。

    3 回复  |  直到 7 年前
        1
  •  0
  •   user3362196    7 年前

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

    此外,numPrinted不应该从1开始。这将产生11颗星。

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

      numStars = 12;
      numPrinted = 0;
    
      while (numPrinted < numStars) {
         numPrinted = numPrinted + 1; 
         System.out.print("*");
      }
    
        2
  •  -1
  •   Enis    7 年前

    您可以尝试:

      numStars = 12;
      numPrinted = 0;
    
      while (numPrinted < numStars) {
         numPrinted = numPrinted + 1; //increment by one
    
         System.out.print("*"); /* Print one asterisk */
      }
    

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

        3
  •  -1
  •   Piano    4 年前

    numPrinted=1;

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

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