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

204
Visualizações
Explicación de bucle for anidado

Codigo escrito en java

Estoy tratando de imprimir la cantidad de entrada del usuario de "*" en la misma línea.

Esto es lo que tengo:

 if (((input / 2) + 1) == ir) { for (int ij = 1 ; ij <= input; ij++) { System.out.print("*"); } }

la declaración if está probando para ver si estamos en el punto medio de la forma que estoy tratando de hacer (una pajarita).

Siento que mi lógica y mi código son correctos, pero para una entrada de 5,

esta línea en particular se ve así: ***

en vez de: *****

¿Alguien puede explicarme por qué sucede esto?

Aquí está el código completo:

 import java.util.Scanner; public class BowTie { public static void main(String [] args) { Scanner scnr = new Scanner(System.in); int input = scnr.nextInt(); int stars = 1; int spaces = input - 2; if ((input % 2 == 1) && (input >= 1)) { for (int ir = 1; ir <= input; ir++) { for (int ic = 1; ic <= stars; ic++) { System.out.print("*"); } for (int ic = 1; ic <= spaces; ic++) { if (((input / 2) + 1) == ir) { for (int ij = 1; ij <= input; ij++) { System.out.print("*"); } } else { System.out.print(" "); } } if (((input + 1) / 2) != ir) { for (int ic = 1; ic <= stars; ic++) { System.out.print("*"); } } if ((input / 2) < ir) { stars--; spaces += 2; } else { stars++; spaces -= 2; } System.out.println(); } } else { return; } scnr.close(); } }
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Te falta la condición else en if (((input + 1) / 2) != ir) de la siguiente manera:

 import java.util.Scanner; public class BowTie { public static void main(String [] args) { Scanner scnr = new Scanner(System.in); int input = scnr.nextInt(); int stars = 1; int spaces = input - 2; if ((input % 2 == 1) && (input >= 1)) { for (int ir = 1; ir <= input; ir++) { for (int ic = 1; ic <= stars; ic++) { System.out.print("*"); } for (int ic = 1; ic <= spaces; ic++) { if (((input / 2) + 1) == ir) { for (int ij = 1; ij <= input; ij++) { System.out.print("*"); } } else { System.out.print(" "); } } if (((input + 1) / 2) != ir) { for (int ic = 1; ic <= stars; ic++) { System.out.print("*"); } // Added else } else { for (int ic = 1; ic <= (input - ir); ic++) { System.out.print("*"); } } if ((input / 2) < ir) { stars--; spaces += 2; } else { stars++; spaces -= 2; } System.out.println(); } } else { return; } scnr.close(); } }

Sin embargo, su código es un poco difícil de leer y entender. Es posible que deba refactorizarlo un poco.

over 4 years ago · Santiago Trujillo Relatório

0

Esto se debe a los cheques que usó. Para ser breve, consulte este script modificado:

 import java.util.Scanner; public class BowTie { public static void main(String[] args) { Scanner scnr = new Scanner(System.in); int input = scnr.nextInt(); int stars = 1; int spaces = input - 2; if ((input % 2 == 1) && (input >= 1)) { for (int ir = 1; ir <= input; ir++) { if (((input + 1) / 2) != ir) { // add this check for (int ic = 1; ic <= stars; ic++) { System.out.print("*"); } } // change this logic: --- if (((input + 1) / 2) == ir) { for(int ic = 1; ic <= input; ic++) { System.out.print("*"); } } else { for (int ic = 1; ic <= spaces; ic++) { System.out.print(" "); } } // --- if (((input + 1) / 2) != ir) { for (int ic = 1; ic <= stars; ic++) { System.out.print("*"); } } if ((input / 2) < ir) { stars--; spaces += 2; } else { stars++; spaces -= 2; } System.out.println(); } } scnr.close(); } }

(líneas con comentarios fueron los cambios)

El primero for inside for (int ir = 1; ir <= input; ir++) estaba imprimiendo las estrellas que ves.
Además, la parte central se cambió para imprimir la línea completa o los espacios (como hiciste tú).

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