java - 如何在同一行打印 2 个 for 循环的结果

标签 java android string formatting

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

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

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

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

61- 70 | [][]

51- 60 | []

41- 50 | [][]

31- 40 |

21- 30 |

11- 20 |

 1- 10 | [][][]

But currently, my output is looking like this,

91-100 |

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

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

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

[][]51- 60 |

[]41- 50 |

[][]31- 40 |

21- 30 |

11- 20 |

 1- 10 |

[][][]

Here is my code:

 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),但从我的尝试来看效果不是很好,只会产生更多问题。 无论如何要将 [] 移回一行?

最佳答案

您可以在 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);
 } 

关于java - 如何在同一行打印 2 个 for 循环的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42012593/

相关文章:

java - HIPI API : does it process 1 image per map task?

android - 在 ListView 中添加 viewpager 作为滚动标题

java - 尝试在空对象引用上调用接口(interface)方法sharedPreferences.edit()'

java - 无法在屏幕上显示输出

string - 检查一个字符串是否是另外两个给定字符串的洗牌

java - 删除 Open Office UNO Java api 中的字段

java - 图像 Servlet 不工作

java - spring boot如何在目标中创建jar文件而无需在pom中添加插件

java - 提出 SOAP 请求时出现问题

c++ - 将 char * 转换为 LPWSTR