如何在同一行上打印2 for循环的结果

时间:2017-02-02 21:26:53

标签: java android string formatting

我试图让代码运行,以便输出看起来像这样,

91-100 | [][][][][][][][][]

81- 90 | [][][][][]

71- 80 | [][][][][][][][][][]

61- 70 | [][]

51- 60 | []

41- 50 | [][]

31- 40 |

21- 30 |

11- 20 |

 1- 10 | [][][]

但目前,我的输出看起来像这样,

91-100 |

[][][][][][][][][]81- 90 |

[][][][][]71- 80 |

[][][][][][][][][][]61- 70 |

[][]51- 60 |

[]41- 50 |

[][]31- 40 |

21- 30 |

11- 20 |

 1- 10 |

[][][]

这是我的代码:

 int[] buckets = new int[10];
 while(scan.hasNextLine()){            
     String line = scan.nextLine();
     String[] array = line.split(separator);
     String grade = array[1];
     int number =  Integer.parseInt(grade.trim());
     buckets[(number - 1)/10]++;           
 }
 for(int i = buckets.length - 1; i >= 0; i--)// RELEVANT PARTS TO QUESTION
     System.out.printf("%2d-%3d |%n", i * 10 + 1, i * 10 + 10);
     for(int j = 0; j < buckets[i]; j++){
         System.out.print("[]");
     }
 } 

我似乎将[]打印到下一行,但我似乎无法弄清楚如何将[]放在上面的行上。我尝试使用printf(%d %d | %s%n),但这与我尝试的方法相比并没有太好用,只会产生更多问题。 无论如何将[]移回一条线?

3 个答案:

答案 0 :(得分:2)

您可以在printf语句之前创建存储桶字符串,然后立即打印字符串,如

 for (int i = buckets.length - 1; i >= 0; i--) {        
     String bucketsString = "";    

     for(int j = 0; j < buckets[i]; j++) 
         bucketsString = bucketsString.concat("[]");

     System.out.printf("%2d-%3d | %s %n", i * 10 + 1, i * 10 + 10, bucketsString);
 } 

答案 1 :(得分:1)

由于printf在您输入%n时会打印一个新行,我建议使用类似的内容(将%n替换为空格,在循环后添加println):

for(int i = buckets.length - 1; i >= 0; i--) {
    System.out.print("%2d-%3d | ", i * 10 + 1, i * 10 + 10);
    for(int j = 0; j < buckets[i]; j++){
        System.out.print("[]");
    } 
    System.out.println("");
}

println语句会在您想要的地方为您提供换行符。

答案 2 :(得分:0)

System.out.printf()System.out.println()在最后添加一个新行。因此,只需使用System.out.print(),并在行末使用System.out.println()

for(int i = buckets.length - 1; i >= 0; i--)// RELEVANT PARTS TO QUESTION
    System.out.print("%2d-%3d |", i * 10 + 1, i * 10 + 10);
    for(int j = 0; j < buckets[i]; j++){
        System.out.print("[]");
    }
    System.out.println();
}