我被要求解决这个算法。到目前为止,这是我对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”)
答案 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);
}
}