对于我的java类,其中一个练习是使用嵌套for循环打印出一个钻石。在练习中,您需要使用最少量的输出,同时使用嵌套for循环。另一个规定是每个输出只能输出1个字符,如单个空格,单个星号或单个结束语句。
我已经完成了,但我想知道是否有更简单的方法,或者是否有人有清理我的代码的提示。它似乎最终写出的方式比需要的更多。非常感谢任何帮助和提示。 :)
以下是最终结果的样子:
这是我的代码:
public class Diamond
{
public static void main(String args[])
{
int b = 11; // secondary asterisk loop counter
int ac = 2; // asterisk count
int sc = 5; // space count
int elc = 2; // end line count
int slc = 1; // space loop count
int sslc = 1; // secondary space loop count
for(int e = 1; e < elc && elc < 12;e++)
{
if(elc <= 6)
{
for(int a = 1; a < ac; a++)
{
for(;sc <= 5 && sc > 0; sc--)
{
System.out.print(" ");
}
System.out.print("*");
}
ac += 2;
sc = 5 - slc;
slc += 1;
}
else if (elc > 6)
{
ac -= 2;
sc = 1;
for (; b < ac ; b++)
{
for(;sc <= sslc && sc > -2; sc++)
{
System.out.print(" ");
}
System.out.print("*");
}
b = 1;
sslc += 1;
}
if(elc != 6)
{
System.out.println();
}
elc += 1;
}
}
}
答案 0 :(得分:0)
您可以尝试将菱形的4个边缘写为方程式(x + y = 4; x-y = 2 ...例如)。然后,只需在网格中的每个单元格中进行嵌套循环,以查看是否应打印空格或星形。测试看起来像
如果f1(x,y)或f2(x,y)或f3(x,y)或f4(x,y):print&#39; *&#39;否则打印&#39; &#39;
其中f1,f2,f3,f4是4对角线的公式。
如果要求最小化要打印的字符数,请使用数组进行准备,然后忽略尾随空格;或者使用一些临时规则(比如每一行只有2个星,除了第一个和最后一个......)
答案 1 :(得分:0)
public class ASultan
{
public static void main(String[] args) {
int size = 9;
for (int i = 1; i < size; i += 2) {
for (int k = size; k >= i; k -= 2) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = 1; i <= size; i += 2) {
for (int k = 1; k <= i; k += 2) {
System.out.print(" ");
}
for (int j = size; j >= i; j--) {
System.out.print("*");
}
System.out.println();
}
}
}