Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

200
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!