Cómo hacer un diamante utilizando Bucles For Anidados

Así que me fue asignado para hacer un diamante con asteriscos en Java y estoy realmente confundido. He aquí lo que he encontrado hasta ahora:

public class Lab1 
{
   public static void main(String[] args)
   {
      for(int i = 5; i > -5; i--)
      {
         for(int j = 0; j < i; j++)
         {
            System.out.print(" ");
         }
         for(int j = 0; j >= i; j--)
         {
            System.out.print(" ");
         }
         System.out.println("*");
      }
   }
}

Cómo hacer un diamante utilizando Bucles For Anidados

  • Esto suena como un ejercicio de programación, y una buena. Esto es algo que vamos a tener que luchar con hasta que llegue la derecha. Eso es lo que la programación es todo acerca de. Alguien dando la respuesta tendrá que lejos de usted. Descubrir en su propia es mucho mejor.
  • Estoy de acuerdo con Kon, sin embargo, yo diría que es aceptable para pedir una pregunta ESPECÍFICA si te encuentras en un callejón sin salida aquí. Una pregunta específica que generalmente dice algo así como: aquí está mi problema, he aquí lo que creo que debería suceder, esto es lo que sucede, aquí está el código que es relevante. Pero, de nuevo, Kon se haga la resolución de problemas es una parte importante de la programación y usted ganará mucho más luchando por un poco de tiempo antes de pedir ayuda.
  • Me alegra ver una pregunta yo tengo mi Java, los estudiantes trabajan en la haya hecho Stackoverflow Acordado de programación es más rompecabezas de cualquier cosa. La sintaxis del lenguaje es menor de edad… la parte difícil es la de rompecabezas de la lógica.
InformationsquelleAutor Anshul Desai | 2013-10-11

12 Kommentare

  1. 3
        for (int i = 0; i < 5; i++) 
              System.out.println("    *********".substring(i, 5 + 2*i));
    
        for (int i =5; i>0;i--)
            System.out.println("     **********".substring(i-1,5+(2*i)-3));
    • Esta es sólo la mejor manera. Me pregunto, ¿por qué no la aceptan respuesta
  2. 3

    con el fin de hacer un diamante que usted necesita para establecer los espacios y las estrellas en la forma que han hecho de este programa simple de usar sólo bucles anidados ya que soy un principiante.

    public class Diamond {
        public static void main(String[] args) {
            int size = 9,odd = 1, nos = size/2; //nos =number of spaces
            for (int i = 1; i <= size; i++) { //for number of rows i.e n rows
                for (int k = nos; k >= 1; k--) { //for number of spaces i.e
                                                    //3,2,1,0,1,2,3 and so on
                    System.out.print(" ");
                }
                for (int j = 1; j <= odd; j++) { //for number of columns i.e
                                                    //1,3,5,7,5,3,1
                    System.out.print("*");
                }
                System.out.println();
                if (i < size/2+1) {
                    odd += 2; //columns increasing till center row 
                    nos -= 1; //spaces decreasing till center row 
                } else {
                    odd -= 2; //columns decreasing
                    nos += 1; //spaces increasing
    
                }
            }
        }
    }

    como se puede ver nos que es el número de espacios debe ser disminuido hasta el centro de la fila y el número de las estrellas debe ser aumentada, pero después de la línea de centro de la frente , yo.e espacios aumento y las estrellas disminución

    tamaño
    puede ser cualquier número que me puse a 9 por aquí, así que voy a tener un tamaño de 9 estrellas, que es de 9 filas y 9 columnas max… cantidad de espacio (nos) va a ser

    9/2 = 4.5

    pero java tomará como 4 porque int no se puede almacenar números decimales y el centro de la fila será

    9/2 + 1 = 5.5

    que será tomado como 5 en int.

    así que lo primero que va a hacer filas.. 9 filas por lo tanto

    (int i=1;i<=size;i++)//tamaño=9

    luego

    de impresión espacios como yo lo hice

    (int k =nn; k>=1; k–) //nos es el tamaño/2

    finalmente estrellas

    (int j=1; j<= impar;j++)

    una vez que la línea termina… puede ajustar las estrellas y los espacios de uso si la condición

  3. 1
    public class Diamond {
    
    //Size of the diamond
    private int diagonal;
    
    public Diamond(int diagonal) {
        this.diagonal = diagonal;
    }
    
    public void drawDiamond() {
        int n = diagonal;
        for (int i = n / 2; i >= -n / 2; i--) {
            for (int k = 0; k < i; k++) {
                System.out.print(" ");
            }
            for (int j = 1; j <= (n - i * 2) && i >= 0; j++) {
                System.out.print("*");
            }
            for (int k = 1; k <= -i && i < 0; k++) {
                System.out.print(" ");
            }
            for (int j = (n / 2) * 2 + 2 * i; j >= -(n % 2 - 1) && i < 0; j--) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
    
    public static void main(String[] args) {
        Diamond a = new Diamond(21);  //You pass diamond size here in the constructor
        a.drawDiamond();
    }
    }

    El principal problema es la paridad de la diagonal.
    Si aún usted no puede aprovechar adecuadamente la parte superior de asterisk. Así que hay 2 tipos de diamantes – con pares e impares diagonal (con 2 y 1 asterisco en la parte superior).

  4. 1
    public class MyDiamond
    {
       public static void main(String[] args)
       {
          int numRows=151;//Length of the pyramid that we want.151 is just an example
          int midrow = (numRows+1)/2;//midrow is the middle row and has numRows number of *
    
          int diff=0;
          for(int i=1;i<numRows+1;i++)
          {
             for(int j=1;j<numRows+1;j++)
             {
                if(((midrow-diff)<=j && (j<=midrow+diff)))
                {
                   System.out.print("*");
                }else
                {
                   System.out.print(" ");
                }
    
             }
             System.out.println();
             if(i<midrow)
             {
             diff++;
             }else
             {
                diff--;
             }
          }
    
    
    
    
       }
    
    }
  5. 1

    Cómo hacer un diamante utilizando Bucles For Anidados

    **Note :- Using Count Global variable we can manage space as well as star increment and decrement**
    
    
    import java.util.*;
    public class ParamidExample
    {
        public static void main(String args[])
        {
            System.out.println("Enter a number");
            Scanner sc=new Scanner(System.in);
            int no=sc.nextInt();
    
            int count=1;
            for(int i=1;i<=2*no-1;i++)
            {
                for(int j=count;j<=no;j++)
                {
                    System.out.print("  "); 
                }
                for(int k=1;k<=count*2-1;k++)
                {
                    System.out.print("* ");
                }
            if(i<no)
                count++;
            else
                count--;
                    System.out.println(""); 
            }
        }
    }
    • Sería útil para informar el código de la respuesta, en lugar de en una imagen.
  6. 0

    Puedo ver lo que usted está tratando de hacer y esta es una muy buena manera de pensar acerca de los diamantes.

    Va a tener algunos problemas con la j contador cuando me sale negativo..vistazo a cómo usar las Matemáticas.abs()

    También a tratar de escribir algunas pseudo código en pasos básicos con los comentarios para obtener el patrón claro:

     //print 5 spaces + 1 star
     //print 4 spaces + 2 stars
     //print 3 spaces + 3 stars
     //print 2 spaces+ 4 stars
     .
     . 
     .  
     //print 5 spaces + 1 star

    Entonces, literalmente sustituir las variables j y i) para los números.

    Ahora tiene un modelo. Esto es a menudo la parte más difícil en la programación..de conseguir el modelo de la derecha. Sólo saltar en la codificación cuando usted tiene una buena idea de cómo funciona el modelo.

    Una vez que se tienen las variables sustituido, puede intentar convertir todo esto en un fichero automatizado de bucle.

  7. 0
    import static java.lang.System.out;
    import java.util.Scanner;
    public class Diamond {
    
        public static void main(String[] args) {
    
        Scanner sc=new Scanner(System.in);
        int row=sc.nextInt();
        sc.close();
        Diamond d=new Diamond();
        d.upperDiamond(row);
        d.lowerDiamond(row-2);
    
        }
        public void upperDiamond(int a){
    
        for(int i=0;i<a;i++){
            for(int j=a-1;j>i;j--)
                out.print(" ");
            for(int k=0;k<2*i-1;k++)
            out.print("*");
            out.print("\n");
            }
        }
        public void lowerDiamond(int b){
    
            for(int i=0;i<b;i++){
            for(int j=0;j<=i;j++)
            out.print(" ");
            for(int k=0;k<2*(b-i)-1;k++)
                out.print("*");
            out.print("\n");
            }
        }
    
    }
  8. 0
    import java.util.Scanner;
    
    
    public class Diamond {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            //TODO Auto-generated method stub
            Scanner in=new Scanner(System.in);
            int input=in.nextInt();
            int min=1;
            for(int i=0;i<input;i++){
                for(int j=input-1;j>i;j--){
                    System.out.print(" ");
                }
                for(int k=0;k<min;k++){
                    if(k%2==0){
                        System.out.print("*");
                    }else{
                        System.out.print(".");
                    }
    
                }
                min+=2;
                System.out.println();
            }
            int z=input+input-3;
            for(int i=1;i<input;i++){
                for(int j=0;j<i;j++){
                    System.out.print(" ");
                }
                for(int k=0;k<z;k++){
                    if(k%2==0){
                        System.out.print("*");
                    }else{
                        System.out.print(".");
                    }
                }
                z-=2;
                System.out.println();
    
            }
    
        }
    
    }
  9. 0

    Esto debería funcionar. Usted probablemente sólo necesitará la mayoría de los métodos y printDiamond(_);

        import java.util.Scanner;
    public class StarsTry 
    {
    
        public static void main(String[] args) 
        {
            int reader;
            Scanner kBoard = new Scanner(System.in);
            do
            {
                System.out.println("Insert a number of rows: ");
    
                    reader = kBoard.nextInt();
                    printDiamond(reader); 
    
    
            }while(reader != 0);
    
        }
    
        public static void printStars(int n)
        {
            if(n >= 1)
            {
                System.out.print("*");
                printStars(n - 1);
            }
        }
    
        public static void printTopTriangle(int rows)
        {
            int x = 1;
            for(int j = (rows - 1); j >= 0; j--,x +=2)
            {
                printSpaces(j);
                printStars(x);
                System.out.print("\n");
            }
        }
    
        public static void printSpaces(int n)
        {
            if(n >= 1)
            {
                System.out.print(" ");
                printSpaces(n - 1);
            }
        }
    
        public static void printBottomTriangle(int rows, int startSpaces)
        {
            int x = 1 + (2*(rows - 1));
            for(int j = startSpaces; j <= (rows) && x > 0; j++,x -=2)
            {
                printSpaces(j);
                printStars(x);
                System.out.print("\n");
            }
        }
        public static void printBottomTriangle(int rows)
        {
            int x = 1 + (2*(rows - 1));
            for(int j = 0; j <= (rows - 1) && x > 0; j++,x -=2)
            {
                printSpaces(j);
                printStars(x);
                System.out.print("\n");
            }
        }
    
        public static void printDiamond(int rows)
        {
            printTopTriangle((int)rows/2 + 1);
            printBottomTriangle((int)rows/2, 1);
        }
    }
    • Mi mal. No he leído la cuestión a fondo, así que no es en un bucle for Anidado. Lo siento! Espero que ayude de todos modos!
  10. 0
    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("    "); //Change a bit if diamonds are not in good shape
                }
    
                if (i < user_input + 1) {
                    for (int b = 0; b < 2 * i + 1; b++) {
                        System.out.print("*  "); //Change a bit if diamonds are not in good shape
                    }
    
                } else if (i > user_input) {
                    for (int c = 0; c < 2 * x - 1; c++) {
                        System.out.print("*  "); //Change a bit if diamonds are not in good shape
                    }
                    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();
            }
        }
      }
    }

    Al hacer diamantes con o bucles.
    Creo que el uso de las Matemáticas.abs’ será la forma más sencilla de hacerlo.

    Usted puede poner el número por el Escáner, y cuando la entrada aumenta el número de diamantes más grande.

    He utilizado Eclipse para hacer de este programa.
    así, el Espacio se diferencian por su entorno de ejecución. como otro IDE, CMD o Terminal. si los diamantes no son en buena forma. Acaba de cambiar los espacios.

  11. -1
    package practice;
    
    import java.util.Scanner;
    
    public class Practice {
    
    
        public static void main(String[] args) {
    
        for(int i=0;i<=10;i++)
        {
            if(i<=5)
            {
            for(int k=1;k<=5-i;k++)
            {
                System.out.print(" ");
            }
            for(int j=0;j<=i;j++)
            {
                System.out.print(" *");
            }
            }
            if(i>5)
            {
            for(int k=0;k<=i-6;k++)
            {
                System.out.print(" ");
            }
            for(int j=0;j<=10-i;j++)
            {
                System.out.print(" *");
            }
            }
            System.out.println();
        }
        }
    
    }
  12. -1
    class Inc_Dec
    {
        public static void main(String[] args)
        {
           int le=11;int c=0;int j1=(le/2)+1;int j2=le-j1;
           for(int i=1;i<=le;i++)
           {
               if(c<j1)
               { 
                 for(int k=(j1-i);k>0;k--)
                 {
                  System.out.print(" ");
                 }  
                 for(int j=1;j<=i;j++)
                 {
                      System.out.print("*"+" ");
                 }
                 c++;
                 System.out.println();
               }
               else
               {
                   for(int k=(i-j1);k>0;k--)
                   {
                       System.out.print(" ");
                   }  
                   for(int j=(le-i+1);j>0;j--)
                   {
                       System.out.print("*"+" ");
                   }
                   System.out.println();
               }
           }
        }
    }
    • ¿Por qué debe el OP «prueba esto»? Un buena respuesta siempre tiene una explicación de lo que se hace y por qué se hizo de esa manera, no sólo para el OP, pero para los futuros visitantes a fin de que pueda encontrar a esta pregunta y leer su respuesta.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea