无法打印到同一行

我正在尝试编写一个代码,在控制台中输入一个整数,然后输入的整数显示更大,由字母组成(如ascii art)。

所以我们说输入是112 。 然后输出将是

  # # ##### ## ## # # # # # # # # # ##### # # # # # # ##### ##### ####### 

我的代码将具有相同的输出,只是不在同一行:(

它将在另一个下面打印一个数字。从我的代码中你可以看到原因:

 import java.util.Scanner; public class Tester { public static void main(String[] args){ Scanner input = new Scanner(System.in); String any = input.nextLine(); String[] sArray = any.split(""); for(int i=0; i<sArray.length; i++){ if(sArray[i].equals("1")){ System.out.println(" # "); System.out.println(" ## "); System.out.println("# # "); System.out.println(" # "); System.out.println(" # "); System.out.println(" # "); System.out.println("#####"); } if(sArray[i].equals("2")){ System.out.println(" ##### "); System.out.println("# #"); System.out.println(" #"); System.out.println(" ##### "); System.out.println("# "); System.out.println("# "); System.out.println("#######"); } } } } 

我不知何故必须一次打印所有,而不是单一输出与println作为我的代码..也许有一个简单的方法来解决这个问题,最好不要改变我的整个代码? 我可以想象它也可以用2darrays完成,但不确定。 提示也非常受欢迎。 这不是功课。

使用String或StringBuilder存储每一行​​,最后打印所有字符串。
逻辑

 import java.util.Scanner; public class Tester { public static void main(String[] args){ Scanner input = new Scanner(System.in); String any = input.nextLine(); String[] sArray = any.split(""); String str1="";String str2="";String str3="";String str4="";String str5="";String str6="";String str7=""; for(int i=0; i 

肮脏但有效:

 private static final Map art = new HashMap() {{ put(1, new String[] { " # ", " ## ", " # # ", " # ", " # ", " # ", " ##### " }); put(2, new String[] { " ##### ", "# #", " #", " ##### ", "# ", "# ", "#######" }); }}; public static void main(String[] args) { int[] input = { 1, 1, 2 }; for (int row = 0; row < 7; row++) { for (int num : input) { System.out.print(art.get(num)[row] + " "); } System.out.println(); } } 

我跳过扫描仪代码并假设输入为1 1 2

产量

  # # ##### ## ## # # # # # # # # # ##### # # # # # # ##### ##### ####### 

建议的逻辑:

  • 将数组中的字符串逐行放置:

     private static final String[] ONE = { " # ", " ## ", ... }; 
  • 运行两个嵌套for循环:

     for (int i = 0; i < heightOfPrintedDigits; i++) { for (String number : sArray) { ... //use print here but finish with an empty println("") to insert a new line } } 

使用字符串数组存储每个数字的多行表示,然后使用映射存储所有数字。 字符串编号可以作为键,它将返回该字符串编号的字符串数组表示forms。

 final int NUM_HEIGHT = 7; String any = "1 1 2"; String[] one = new String[] { " # ", " ## ", "# # ", " # ", " # ", " # ", "#####"}; String[] two = new String[] { " ##### ", "# # ", " # ", " ##### ", "# ", "# ", "####### "}; Map map = new HashMap<>(); map.put("1", one); map.put("2", two); String[] numbers = any.split("\\s"); for (int i=0; i < NUM_HEIGHT; ++i) { StringBuilder line = new StringBuilder(); for (String number : numbers) { line.append(map.get(number)[i]); line.append(" "); } System.out.println(line); }