我试图用/,\制作菱形,并且仅使用for循环进行敲击,如果是,但侧面错了,则右侧太大,而左侧太短。这是去学校的
public class Main
{
public static void main (String[]args)
{
int n = 7;
{
for (int i = 0; i < n; i++)
{
for (int a = 0; a < (n - (i + 1)); a++)
{
System.out.print (" ");
}
for (int b = 0; b < (i * 2); b++)
{
if (b < n / 2)
{
System.out.print ("/");
}
else if (b == n / 2)
{
System.out.print ("*");
}
else if (b > n / 2)
{
System.out.print ("\\");
}
}
System.out.println ();
}
for (int i = n - 1; i >= 0; i--)
{
for (int a = 0; a < (n - (i + 1)); a++)
{
System.out.print (" ");
}
for (int b = 0; b < (i * 2); b++)
{
if (b < n / 2)
{
System.out.print ("\\");
}
else if (b == n / 2)
{
System.out.print ("*");
}
else if (b > n / 2)
{
System.out.print ("/");
}
}
System.out.println ();
}
}
}
}
答案 0 :(得分:0)
这些问题不是真正针对SO的,而是... 因此,您做错的是您正在尝试将所有内容放入一个循环中。 尽管这是可能的,但它使代码变得复杂且难以跟踪。 我可以解决这个问题,但是您对何时打印/何时打印的估计过多。 因此,我为您简化了此操作:
执行此操作一半时间: 1.输出空格
输出/
输出*
输出\
现在在第二半做相反的事情。
public class Main
{
public static void main (String[]args)
{
int n = 7;
{
for (int i = 0; i < n/2; i++)
{
for (int a = 0; a < (n/2-(i+1)); a++)
{
System.out.print (" ");
}
for (int b = 0; b < i; b++)
{
System.out.print ("/");
}
System.out.print ("*");
for (int c = 0; c < i; c++)
{
System.out.print ("\\");
}
System.out.println ();
}
for (int i = n/2-1; i >= 0; i--)
{
for (int a = 0; a < (n/2-(i+1)); a++)
{
System.out.print (" ");
}
for (int b = 0; b < i; b++)
{
System.out.print ("\\");
}
System.out.print ("*");
for (int c = 0; c < i; c++)
{
System.out.print ("/");
}
System.out.println ();
}
}
}
}
答案 1 :(得分:0)
我只是重写了整个内容,只想分享;
public static void main(String[] args) {
String star = "*";
String for_slash = "/";
String back_slash = "\\";
String space = " ";
int n = 4;
for (int i = 0; i < n; i++) {
String line = "";
int d = i % n;
for (int l = n - 1; l > 0; l--) {
line += ((l < (d + 1)) ? for_slash : space) + space;
}
line += star;
for (int l = 0; l < n - 1; l++) {
line += space + ((l < d) ? back_slash : space);
}
System.out.println(line);
}
for (int i = 0; i < n; i++) {
String line = "";
int d = i % n;
for (int l = 0; l < n - 1; l++) {
line += ((l > (d - 1)) ? back_slash : space) + space;
}
line += star;
for (int l = n - 1; l > 0 ; l--) {
line += space + ((d < l) ? for_slash : space);
}
System.out.println(line);
}
}
您可以自己编辑间距等
n = 6
*
/ * \
/ / * \ \
/ / / * \ \ \
/ / / / * \ \ \ \
/ / / / / * \ \ \ \ \
\ \ \ \ \ * / / / / /
\ \ \ \ * / / / /
\ \ \ * / / /
\ \ * / /
\ * /
*