Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

460
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda