Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

455
Vistas
¿Cómo imprimir corbatín en java?

Cómo hacer este patrón si la entrada N = 5 Salida:

 * * ** ** ****** ** ** * *

Aquí está mi código

 for(int i = 0; i < n + 1; i++) { for(int j = 0; j < n + 1; j++) { if ((j > i && j < n - i) || (j > (ni) && j < i && i > n)) System.out.print(" "); else System.out.print("*"); } System.out.println(); }

El resultado es así:

 * * ** ** ****** ****** ****** ******

¿Cómo podría arreglar esto?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Ha utilizado O || para combinar el triángulo superior que apunta hacia abajo de " " y el triángulo inferior que apunta hacia arriba de " ". Buena idea.

Describes el triángulo superior como (j > i && j < n - i) , eso es correcto.

Sin embargo, describe el triángulo inferior como (j > (ni) && j < i && i > n) .
Ahí es donde está el problema. El i > n nunca es cierto para i de 0 a n como en su construcción de bucle externo. Para describir la mitad inferior del patrón, debería haber usado i>n/2 . Sin embargo, podría haber eliminado esa parte de la condición por completo, porque las comparaciones de contador en la primera parte solo se aplicarían en la mitad inferior de todos modos.
Entonces (j > (ni) && j < i) .

Eso te lleva:

 * * ** ** ****** ****** ** **

Por cierto, n líneas, no n+1 líneas en el bucle exterior.

Como puede ver, el triángulo inferior de " " es demasiado pequeño. Ambos, al lado derecho y al lado izquierdo.
Por lo tanto, debe hacer que sus condiciones sean más generosas, es decir, "menor-igual" y "superior-igual" en lugar de "inferior" y "superior". En código (j >= (ni) && j <= i) .

Poniendo todo junto:

 public class Main { static final int n = 5; public static void main(String[] args) { for(int i = 0; i < n; i++) // only n lines { for(int j = 0; j < n+1; j++) { if ((j > i && j < n - i) || (j >= (ni) && j <= i)) // more generous and no second condition System.out.print(" "); else System.out.print("*"); } System.out.println(); } } }

Este código es muy similar a su intento y le da el deseado

 * * ** ** ****** ** ** * *
over 4 years ago · Santiago Trujillo Denunciar

0

Su intento existente es realmente muy cercano aquí hay una versión de trabajo que corrige la segunda condición (que en su intento actual siempre sería falso):

 class Main { public static void main(String[] args) { printBowtie(5); } private static void printBowtie(int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n + 1; j++) { if ((j > i && j < n - i) || (j >= n - i && j <= i)) { System.out.print(" "); } else { System.out.print("*"); } } System.out.println(); } } }

Producción:

 * * ** ** ****** ** ** * *

Diferencia relevante :

 private static void printBowtie(int n) { - for (int i = 0; i < n + 1; i++) { + for (int i = 0; i < n; i++) { for (int j = 0; j < n + 1; j++) { - if ((j > i && j < n - i) || (j > (n - i) && j < i && i > n)) { + if ((j > i && j < n - i) || (j >= n - i && j <= i)) {
over 4 years ago · Santiago Trujillo Denunciar

0

Puede simplificarlo enormemente poniendo el código común en un método como se muestra a continuación:

 public class Main { static final int LINES = 5; public static void main(String[] args) { // Upper half for (int line = 1; line <= LINES / 2 + 1; line++) { print(line); } // Lower half for (int line = LINES / 2; line >= 1; line--) { print(line); } } static void print(int line) { for (int j = 1; j <= line; j++) { System.out.print("*"); } for (int j = 1; j <= LINES - 2 * line + 1; j++) { System.out.print(" "); } for (int j = 1; j <= line; j++) { System.out.print("*"); } System.out.println(); } }

Producción:

 * * ** ** ****** ** ** * *
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda