在后台控制台上打印字母X.

时间:2016-12-15 12:43:30

标签: java algorithm design-patterns

我被要求解决这个算法。到目前为止,这是我对java代码的看法。我不知道我遗失了什么。问题如下: 编写一个名为ProblemA003的类,输出以下形状(在背景控制台上使用“$”符号表示字母X):

  

只需输出到控制台(使用system.out)   假设一个25行深和79个字符宽的控制台屏幕(参见下面的控制台 - 它包含“=”字符,每10列和每行都有相关的编号。   形状必须以此控制台屏幕为中心,即中间的“$”应位于第13行第40列   将一个int参数(可以命名为sizeOfX)作为程序的输入。此参数将指示中间“$”两侧的X中有多少“$”。您可以通过“main”方法简单地传递此参数。有关参数sizeOfX的更清晰描述,请参阅下面的示例,其中sizeOfX = 5   注意:参数sizeOfX必须仅取值1-9(包括1和9)。当然,sizeOfX的值越大,程序必须生成的X的大小就越大。

我的方法:

private static void MakeACross(int number) {
    int start = 0;
    int end = number - 1;
    for (int i = 0; i < number; i++) {
        System.out.print("==");
        for (int j = 0; j < number; j++) {
            System.out.print("==");
            if (start == end && j == i) {
                System.out.print('$');
            } else if (start == j || end == j) {
                System.out.print('$');
            } else {
                System.out.print(' ');
            }
        }
        start++;
        end--;
        System.out.println("==");
    }
}

任何能够帮助我如何进一步解决这个问题的人都将受到高度赞赏。

输出应该是ass:如果输入是5(即sizeOfX = 5),你的程序应该完全产生输出(分别在第10行和第20行的第一列中注意“1”和“2”)

1 个答案:

答案 0 :(得分:0)

也许那会起作用

   public void PrintX(int number)
    {


        int headLoc = 0, tailLoc = number - 1;

        for (int i = 0; i < number; i++)
        {
            string line = "";
            for (int j = 0; j < number; j++)
            {
                if (j == headLoc || j == tailLoc)
                {
                    line += "=";
                }
                else
                {
                    line += " ";
                }
            }

            headLoc++;
            tailLoc--;
            System.out.println(line);

        }


    }