带有Java嵌套for循环的Diamond

我试图使用嵌套for循环显示一个星号钻石。

这是我到目前为止的代码:

public class Diamond { public static void main(String[] args) { int size = 9; for (int i = 1; i = i; k -= 2) { System.out.print(" "); } for (int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(); }// end loop for (int i = 1; i <= size; i += 2) { for (int k = 1; k = i; j--) { System.out.print("*"); } System.out.println(); }// end loop } } 

这很接近,但我打印了9行星号两次。

如何调整第二个for循环以在7个星号和2个空格处开始输出?

谢谢您的帮助!

在你的第一个for循环中删除=标记并只使用for (int i = 1; i < size; i += 2)

完整代码

  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(); }// end loop 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(); }// end loop 

试试这段代码:

我改变了第一个循环:

  for (int i = 1; i <= size-1; i += 2) { 

  int size = 9; for (int i = 1; i <= size-1; 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(); }// end loop 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(); }// end loop } 
  int n = 9; for(int i =0;ii;k--){ System.out.print(" "); } for(int j=0;j<2*i+1;j++){ System.out.print("*"); } System.out.println(""); } for(int j=0;j=0;k--){ System.out.print(" "); } for(int i=2*(nj-1)-1;i>0;i--){ System.out.print("*"); } System.out.println(""); } 

只是为了好玩…… :)试试我的代码….

 public class Diamond { static String sp(int n) { String s = ""; for (int i = 0; i < n; i++) s += " "; return s; } static String st(int n) { String s = ""; for (int i = 0; i < n; i++) s += "*"; return s; } static int abs(int n) { if (n < 0) return -n; else return n; } public static void main(String[] args) { int size = 9; for (int i = 0; i < size; i++) { System.out.println(sp(abs((size-1)/2-i)) + st(abs(9-2*((i+5)%(size)))) + sp(abs((size-1)/2-i))); } } } 

试试这个代码。 使用Math.abs会很简单。

 import java.util.Scanner; public class MakeDiamond { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (true) { System.out.println("Let's Creat Diamonds"); System.out.println("If number increases Diamonds gets bigger. Please input number lager than 1 : "); int user_input = sc.nextInt(); //gets user's input System.out.println(""); int x = user_input; int front_space = -5; for (int i = 0; i < 2 * user_input + 1; i++) { for (int a = front_space; a < Math.abs(i - user_input); a++) { System.out.print(" "); } if (i < user_input + 1) { for (int b = 0; b < 2 * i + 1; b++) { System.out.print("* "); } } else if (i > user_input) { for (int c = 0; c < 2 * x - 1; c++) { System.out.print("* "); } x--; } System.out.print('\n'); } System.out.println("\nRun Again? 1 = Run, 2 = Exit : "); int restart = sc.nextInt(); System.out.println(""); if (restart == 2) { System.out.println("Exit the Program."); System.exit(0); sc.close(); } } } }