如何在java中打印10行10个字符(或字符串)非常繁琐

时间:2016-09-02 05:40:17

标签: java

我正在通过初学者练习用Java编写一个小程序。我的任务是打印出(即找到算法)以下输出

XOOOOOOOOO
XXOOOOOOOO
XXXOOOOOOO
XXXXOOOOOO
XXXXXOOOOO
XXXXXXOOOO
XXXXXXXOOO
XXXXXXXXOO
XXXXXXXXXO
XXXXXXXXXX

我已经想出了如何做到这一点,但我写的代码似乎重复而乏味。如何缩短我的代码?必须有一种更简单的方法来实现这一目标吗?

这是我现在的代码;

package helloWorld;

public class HelloWorld {

public static void main(String[] args) 
{
    // Output


    // Algorithm 1

    boolean ft = true;

    String s = new String();
    for(int i = 0; i < 10; i++)
    {
        s  += "X";
        for(int j = 0; j < 9; j++)
        {
            if(i == 0)
            {

                s += "O";
            }

            if(i == 1)
            {

                if(ft == true)
                {
                    s+="X";
                    ft = false;
                }
                if(j == 8)
                {
                    continue;
                }
                s += "O";
            }

            if(i == 2)
            {

                if(ft == true)
                {
                    s+= "XX";
                    ft = false;

                }

                if(j == 7)
                {

                    break;
                }
                s += "O";

            }

            if(i == 3)
            {

                if(ft == true)
                {
                    s+= "XXX";
                    ft = false;

                }

                if(j == 6)
                {

                    break;
                }
                s += "O";
            }

            if( i == 4)
            {
                if(ft == true)
                {
                    s+= "XXXX";
                    ft = false;

                }

                if(j == 5)
                {

                    break;
                }
                s += "O";
            }

            if( i == 5)
            {
                if(ft == true)
                {
                    s+= "XXXXX";
                    ft = false;

                }

                if(j == 4)
                {

                    break;
                }
                s += "O";
            }

            if( i == 6)
            {
                if(ft == true)
                {
                    s+= "XXXXXX";
                    ft = false;

                }

                if(j == 3)
                {

                    break;
                }
                s += "O";
            }

            if( i == 7)
            {
                if(ft == true)
                {
                    s+= "XXXXXXX";
                    ft = false;

                }

                if(j == 2)
                {

                    break;
                }
                s += "O";
            }

            if( i == 8)
            {
                if(ft == true)
                {
                    s+= "XXXXXXXX";
                    ft = false;

                }

                if(j == 1)
                {

                    break;
                }
                s += "O";
            }

            if( i == 9)
            {
                if(ft == true)
                {
                    s+= "XXXXXXXXX";
                    ft = false;

                }

                if(j == 0)
                {

                    break;
                }
                s += "O";
            }


        }
        System.out.println(s);
        s = "";
        ft = true;

    }
}

}

4 个答案:

答案 0 :(得分:5)

只需使用2个嵌套循环:

{{1}}

答案 1 :(得分:0)

只需创建一个循环,指示您希望拥有多少行。

在此循环中,您可以再嵌套两个循环,一个循环打印所有X,一个打印所有O

public static void main(String[] args) {
    print(10);
}

private static void print(int length) {
    // Print until length 
    for (int i = 0;i<length;++i) {
        for (int j = 0;j<=i;++j) {
            // Write all the necessary X. Don´t print a carriage return
            System.out.print("X");
        }
        for (int j = i+1;j<length;++j) {
            // Write all the necessary O. Don´t print a carriage return
            System.out.print("O");
        }
        // Start a new line
        System.out.println();
    }
}

答案 2 :(得分:0)

您可以尝试以下代码。在您的代码中,如果要求更改为100 * 100平方或更大,我无法想象您将如何做到这一点。

public class HelloWorld {
    public static void main(String args[]){
        int size = 10;
        for(int i = 0; i < size; i++){
            int number_X = i;
            do{
                System.out.print("X");
                number_X--;
            }while(number_X >= 0);
            int number_O = size - i - 1;
            while(number_O > 0){
                System.out.print("O");
                number_O--;
            }
            System.out.println();
        }
    }
}

答案 3 :(得分:0)

使用commons-lang3的其他简短版本:

public static void main(String[] args) {
    // Algorithm 1
    String o = null;
    for (int i = 0; i < 10; i++) {
        String x = StringUtils.repeat("X", i+1);
        o =StringUtils.repeat("0", 9-i); 
        System.out.println(x+o);

    }

}