无法为java模式

时间:2016-04-07 15:30:45

标签: java

如何使用for循环打印此模式,请使用注释行解释步骤

123454321

1234_4321

123 ___ 321

12 _____ 21

1 _______ 1

我知道如何只写左侧部分或右侧部分,但我不知道如何在两者之间输入正确数量的“_”。不要把代码发给我,只告诉我该怎么做

这不是我的作业

**我的解决方案**

public static void main(String[] args) {

    int pointer = 6;
    for(int i=0; i<=5; i++){

        for(int j = 1; j<= i; j++){
            if(pointer > j || j == 1) {
                System.out.print(j);
            } else {
                System.out.print("_");
            }
        }

        for(int j = 4; j > 0; j--) {
            if(pointer > j || j == 1) {
                System.out.print(j);
            } else {
                System.out.print("_");
            }
        }

        pointer--;
        System.out.println();
    }
}

3 个答案:

答案 0 :(得分:1)

我会做这样的事情:

    String numbers = "123454321";
    String[] remove = new String[]{"5", "4", "3", "2"};
    System.out.println(numbers);
    for (String current : remove) {
        numbers = numbers.replace(current, "_");
        System.out.println(numbers);
    }

不使用数组编码:

    String numbers = "123454321";
    System.out.println(numbers);
    for (int x = 5; x > 1; x--) {
        numbers = numbers.replace(Integer.toString(x), "_");
        System.out.println(numbers);
    }

答案 1 :(得分:1)

根据我的写作,它与我编辑你的文字一样:

int pointer = 6;

for(int i=5;i>0;i--) {

    // writing number from 1 to 5
    // number 1 is always displayed
    for(int j=1;j<6;j++) {
        if(pointer > j || j == 1) {
            System.out.print(j);
        } else {
            System.out.print("_");
        }
    }

    // writing number from 4 to 1
    // number 1 is always displayed
    for(int j=4;j>0;j--) {
        if(pointer > j || j == 1) {
            System.out.print(j);
        } else {
            System.out.print("_");
        }
    }

    // To add the line end and subtract the pointer
    System.out.println("");
    pointer--;
}

一般解决方案,其中n是最高数字。

int pointer = n+1;

for(int i=n;i>0;i--) {

    // writing number from 1 to 5
    // number 1 is always displayed
    for(int j=1;j<n+1;j++) {
        if(pointer > j || j == 1) {
            System.out.print(j);
        } else {
            System.out.print("_");
        }
    }

    // writing number from 4 to 1
    // number 1 is always displayed
    for(int j=n-1;j>0;j--) {
        if(pointer > j || j == 1) {
            System.out.print(j);
        } else {
            System.out.print("_");
        }
    }

    // To add the line end and subtract the pointer
    System.out.println("");
    pointer--;
}

答案 2 :(得分:0)

这是我的问题解决方案

public static void main(String[] args) {
    int i=0;
    int count=0;
    for (i = 5; i >= 0; i--) {
        for (int j = 1; j <= i; j++) {
            if(j!=5)
            System.out.print(j);
        }
        if (i!=0) {
            for (int m = 0; m < count; ++m) {
                System.out.print("_");
            }
        }
        for (int k = i; k > 0; k--) {
            System.out.print(k);
        }
        System.out.println();
        ++count;
    }
}

希望它可以帮到你