Hay muchas formas de hacerlo, con varios ciclos,
yo prefiero los cálculos matemáticos, aquí hay
un ejemplo de como puedes realizarlo:
//OBTENGO EL NUMERO DESDE LOS ARGUMENTOS
int n = Integer.parseInt(args[0]);
....
//LO DIVIDO ENTRE DOS PARA TENER POSITIVOS Y NEGATIVOS
int m = n / 2;
......
//EN ESTE CICLO VA DE -m HASTA +m
for (int y = -m; y <= m; y++) {
.....
//EN ESTE CICLO VA DE -m HASTA +m OTRA VEZ PARA FORMAR EL ROMBO
for (int x = -m + fix; x <= m; x++) {
.....
No se me ocurre ni por donde empezar a explicar
este programa, si tienes alguna duda, pregunta en este
mismo hilo de conversación, para discernir el funcionamiento.
La idea es, si es un rombo de 7 x 7, los ciclos no van de 1..7, 1..7...
sino que van de -2 hasta +3 y -2 hasta +3. De esta forma puedes crear
un rombo.
public class rombo {
public static void main(String[] args) {
int n = Integer.parseInt(args[0]);
int m = n / 2; int fix = n % 2 > 0.0 ? 0 : 1;
for (int y = -m + fix; y <= m; y++) {
int z = y * ((m + 1) - Math.abs(y));
for (int x = -m + fix; x <= m; x++) {
if (Math.abs(y * x) < Math.abs(z) || y == 0) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.print(String.format("%1$4d", (y % 10)));
System.out.println();
}
}
}
templates@devservapp:~$ java rombo 17
* -8
*** -7
***** -6
******* -5
********* -4
*********** -3
************* -2
*************** -1
***************** 0
*************** 1
************* 2
*********** 3
********* 4
******* 5
***** 6
*** 7
* 8
También te aconsejo que tengas a mano un libro de álgebra.
También te aclaro que está es la forma más COMPLICADA de hacerlo.
Pero también la más eficiente y es la mejor forma de programar.
Saludos,