“ while”循环未正确迭代

时间:2019-02-25 02:38:32

标签: java

我应该使用循环来打印以下输出:

            1 
          2 1 
        3 2 1 
      4 3 2 1 
    5 4 3 2 1 
  6 5 4 3 2 1 
7 6 5 4 3 2 1 

此模式中的最高数字(在此示例中为7)由用户输入确定。这是该模式的适用代码:

index=patternLength+1; n=1;     //These values are all previously intitialized
while (index!=1) {
    index--;
    printSpaces((index*2)-2);   //A static method that prints a certain number of spaces
    while(n!=1) {
        n--;
        System.out.print(n + " ");
    }
    System.out.print("\n");
    n=patternLength+1-index;
}

这是用户输入“ 7”的错误输出:



        1 
      2 1 
    3 2 1 
  4 3 2 1 
5 4 3 2 1 

错误输出之前有两个空行;这些行具有完整/正确模式所需的正确空格数,但是由于某些原因,实际数字在循环中开始打印得“太迟”。 换句话说,正确示例中出现在“ 1,2 1”之前的空格在错误的输出中。这是一些数字,使正确的示例不正确。

2 个答案:

答案 0 :(得分:1)

好,我明白了。

library(tidyverse)
library(quantmod)
library(timekt)

my_data <- readr::read_csv('my excel file.csv')
class(my_data)

我的问题是我的“ n”必须同时上升和下降,因此额外的变量“ nSetter”似乎已经解决了这一问题,尽管这可能是一种解决方案。随你。感谢@Andreas为我指明了正确的方向,并感谢@JohnKugelman进行了有益的编辑。

答案 1 :(得分:1)

请在第二次while循环不正确时尝试使用此代码。

int index = patternLength + 1;
        int n = 2;     //These values are all previously intitialized
        int i = 1;
        while (index != 1) {
            index--;
            printSpaces((index * 2) - 2);   //A static method that prints a certain number of spaces
            while (n != 1) {
                n--;
                System.out.print(n + " ");
            }
            System.out.print("\n");
            i++;
            n = i+1;
        }