繁体   English   中英

Java数组打印楔形图案

[英]java array printing wedge pattern

我必须编写一个方法,其中需要一个整数(如下所示)。 例如,如果n为3,它将打印[1,2,3,2,1],而5将打印[1,2,3,4,5,4,3,2,1]需要帮助环!

public static int[] createWedge(int n) {
    //precondition:  n > 0
    int[] arr = new int[n+n-1];
    int i;
    for(i = 0; i < n; i++) {
        arr[i] = i + 1;
    }
    for(int g = i; g < n; i--) {
        arr[g] = g - 1;
    }

    //dummy return value
    return arr; 
}

任何帮助都会很棒。 谢谢!

尝试这个。 遍历前半部分1-n,然后遍历下半部分n-1至1。

for (int i = 0; i < n; i++)
     arr[i] = i + 1;
int j = n;
for (int g = n - 1; g > 0; g--)
     arr[j++] = g;

j也可以称为位置,因为它跟踪设置为该值的数组中的位置。

Jase已经发布了正确的答案,但是我将其稍作重写以查看它是否对您有所帮助

public static int[] createWedge(int n) {
    int[] arr = new int[n+n-1];
    for (int i = 0; i < n; i++)
         arr[i] = i + 1;
    for (int g = n - 1, j = n; g > 0; g--, j++)
         arr[j] = g;
    return arr;
}

就像在第一个循环中一样,我们需要一个不断增加的计数器。 这是我们在数组中的位置。 在Jase的解决方案中,这个叫做j

但是我们还需要另一个计数器下降。 这是我们放入数组中的数字。 它从n倒数到1。这就是g g等于0时我们停止。这就是为什么我们有继续条件g > 0

您的第一个for循环更容易,因为两个计数器的相同之处即i 它上升到数组中的位置并增加了要放入数组中的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM