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

226
Vistas
Cómo ejecutar un bloque de código para cada argumento de línea de comando dado, pero imprimirlo en una línea

He estado tratando de lograr esto durante una semana sin éxito. Me gustaría que el programa imprima los argumentos de la línea de comando entre paréntesis como se muestra a continuación (en una línea):

 ---------- +++++++++++ --------- ++++++++ - orange - + apricot + - grape - + kiwi + ---------- +++++++++++ --------- ++++++++
  • Argumentos de línea de comando: naranja, albaricoque, uva, kiwi
  • los corchetes cambian de - para argumentos con índices pares y + para argumentos con índices impares

Pero mi código imprime:

 ---------- - orange - ---------- +++++++++++ + apricot + +++++++++++ --------- - grape - --------- ++++++++ + kiwi + ++++++++

Mi código:

 public class A2 { public static void main(String[] args) { for (int i = 0; i < args.length; i++) { //1.line if (i % 2 == 0) { System.out.println("-".repeat(args[i].length()+4)); } else { System.out.println("+".repeat(args[i].length()+4)); } //2.line if (i % 2 == 0) { System.out.printf("- %s -\n", args[i]); } else { System.out.printf("+ %s +\n", args[i]); } //3.line if (i % 2 == 0) { System.out.println("-".repeat(args[i].length()+4)); } else { System.out.println("+".repeat(args[i].length()+4)); } } } }

Probé diferentes métodos de impresión, como System.out.print() y me deshice de \n , pero solo estropea los corchetes alrededor de las palabras, así que creo que tengo que hacer algo en el nivel del bucle for , pero soy un completo Java novato y estoy perdido. Pensé en agregar otra variable para resolver el problema, pero no puedo entender cómo hacerlo en este caso y si incluso resolverá el problema.

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

0

Debe tener un ciclo for separado for cada línea que desee imprimir (en lugar de un ciclo for único que intente imprimir las tres líneas).

Tenga en cuenta que, dado que la primera y la última línea son idénticas, podría reemplazar la primera y la última for bucles con una llamada a un método que imprima la línea.

 public class A2 { private static void printLine(String[] args) { for (int i = 0; i < args.length; i++) { if (i % 2 == 0) { System.out.print("-".repeat(args[i].length() + 4)); System.out.print(" "); } else { System.out.print("+".repeat(args[i].length() + 4)); System.out.print(" "); } } System.out.println(); } public static void main(String[] args) { // 1.line printLine(args); // 2.line for (int i = 0; i < args.length; i++) { if (i % 2 == 0) { System.out.printf("- %s -", args[i]); System.out.print(" "); } else { System.out.printf("+ %s +", args[i]); System.out.print(" "); } } System.out.println(); // 3.line printLine(args); } }

El resultado que obtengo para sus argumentos de muestra es:

 ---------- +++++++++++ --------- ++++++++ - orange - + apricot + - grape - + kiwi + ---------- +++++++++++ --------- ++++++++
over 4 years ago · Santiago Trujillo Denunciar

0

Aquí está mi solución. El enfoque que desea adoptar con esto es ir línea por línea, ya que con Java no puede volver a la línea anterior sin bibliotecas de terceros.

 public static void main(String[] args) { if(args.length > 0) { System.out.println(makeBorderLine(args)); System.out.println(makeFruitLine(args)); System.out.println(makeBorderLine(args)); } } public static String makeFruitLine(String[] args) { String fruitLine = ""; for(int i = 0; i < args.length; i++) { if(i % 2 == 0) { fruitLine += "- " + args[i] + " - "; } else { fruitLine += "+ " + args[i] + " + "; } } return fruitLine; } public static String makeBorderLine(String[] args) { String line1 = "-"; String line2 = "+"; String line = ""; for(int i = 0; i < args.length; i++) { if(i % 2 == 0) { line += line1.repeat(args[i].length() + 4) + " "; } else { line += line2.repeat(args[i].length() + 4) + " "; } } return line; }
over 4 years ago · Santiago Trujillo Denunciar

0

Gracias a todos los que me dieron algunas pistas o soluciones para estudiar.

Al final entendí cuál era el problema de mi código y opté por una solución que quizás no sea la más óptima, pero es la que yo, un principiante completo, entiendo más en este momento y también una que cubre solo las cosas que estaban aprendiendo hasta ahora.

Este fue mi código:

 public class A2 { public static void main(String[] args){ //1.line for (int i = 0; i < args.length; i++){ if (i % 2 == 0) { System.out.print("-".repeat(args[i].length()+4) + " "); } else { System.out.print("+".repeat(args[i].length()+4) + " "); } } System.out.println(); //2.line for (int i = 0; i < args.length; i++){ if (i % 2 == 0) { System.out.printf("- %s -", args[i]); } else { System.out.printf("+ %s +", args[i]); } } System.out.println(); //3.line for (int i = 0; i < args.length; i++){ if (i % 2 == 0) { System.out.print("-".repeat(args[i].length()+4) + " "); } else { System.out.print("+".repeat(args[i].length()+4) + " "); } } System.out.println(); } } ´´´
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