Java 如何在同一行上打印两个for循环的结果
我试图让代码运行,以便输出如下所示 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 | [][][] 但是现在我的输出是这样的 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 | [][][] 这是我的密码:Java 如何在同一行上打印两个for循环的结果,java,android,string,formatting,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 | [][][
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("[]");
}
}
int[]bucket=newint[10];
而(scan.hasNextLine()){
String line=scan.nextLine();
String[]数组=line.split(分隔符);
字符串级别=数组[1];
int number=Integer.parseInt(grade.trim());
桶[(数字-1)/10]+;
}
for(int i=bucket.length-1;i>=0;i--)//要提问的相关部分
System.out.printf(“%2d-%3d |%n”,i*10+1,i*10+10);
对于(int j=0;j
我似乎正在将[]
打印到下一行,但我似乎不知道如何将[]
放在上一行。我曾尝试使用printf(%d%d |%s%n)
,但与我的尝试相比,效果不太好,只会产生更多问题。
是否仍有必要将
[]
移回一行?由于printf
在输入%n
时会打印新行,因此我建议使用类似的方法(将%n
替换为空格,在循环后添加println
):
for(int i=bucket.length-1;i>=0;i--){
系统输出打印(“%2d-%3d |”,i*10+1,i*10+10);
对于(int j=0;j
println
语句将在您想要的位置为您提供换行符。您可以在printf
语句之前创建bucket字符串,然后像下面一样立即打印字符串
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);
}
for(inti=bucket.length-1;i>=0;i--){
字符串bucketsString=“”;
对于(int j=0;j
System.out.printf()
和System.out.println()
在末尾添加新行。因此,只需使用System.out.print()
并在一行末尾使用System.out.println()
for(int i=bucket.length-1;i>=0;i--)//要提问的相关部分
系统输出打印(“%2d-%3d |”,i*10+1,i*10+10);
对于(int j=0;j
看看你是否能想出一种方法,在一个print语句中打印出每一行。我试过这样做,但我的助教说很难正确格式化,我应该使用2 for loopsI插入println语句,这使代码看起来更整洁,但它只是将括号完全放在一行上,而不是像我尝试做的那样并排放在数字后面。只要println
在循环之后,它就不应该将[]
移动到下一行,你是否将它放在循环中并得到一个垂直列[]
?别忘了将%n
更改为“我的荣幸”,我应该在原始答案xD的非代码部分指定这两个更改。此外,我还建议查看Michael Lihs的答案,并选择一个适合您的答案。我喜欢这样。除了看起来更好之外,还有一大堆concat
s比print
s快吗?不是100%确定,但是由于print
需要以某种方式与系统交互,我想concat
应该更快,因为它是“Java内部的”。但是我不知道print
实际上是如何在Java中实现的,所以这只是一个猜测
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);
}
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();
}