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 + ---------- +++++++++++ --------- ++++++++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.
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 + ---------- +++++++++++ --------- ++++++++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; }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(); } } ´´´