Java 以所需的方式格式化输出
下面的方法生成一个输出。 这段代码唯一的问题是,在报告结束后,它向文件中添加了两行额外的内容,而只需要一行空行。 我尝试过各种组合,但无法继续 有人能帮忙吗Java 以所需的方式格式化输出,java,format,report,output,Java,Format,Report,Output,下面的方法生成一个输出。 这段代码唯一的问题是,在报告结束后,它向文件中添加了两行额外的内容,而只需要一行空行。 我尝试过各种组合,但无法继续 有人能帮忙吗 private static void save_player_info(String[][] data, String player) { player=player.toLowerCase(); try { PrintWriter printWriter= new PrintWriter(new File
private static void save_player_info(String[][] data, String player) {
player=player.toLowerCase();
try {
PrintWriter printWriter= new PrintWriter(new File("out4.txt"));
for(int row=1;row<data.length;row++){
String playerName=data[row][0].toLowerCase();
if(playerName.indexOf(player)!=-1){
String[] fields=data[0];
String[] values=data[row];
for (int i=0;i<fields.length;i++){
printWriter.printf("%21s : %s\n",fields[i],values[i]);
}
printWriter.print("\n");
}
}
printWriter.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
private static void save\u player\u info(字符串[][]数据,字符串播放器){
player=player.toLowerCase();
试一试{
PrintWriter PrintWriter=新的PrintWriter(新文件(“out4.txt”);
对于(int row=1;row而不是无条件地在内部for
循环之后添加一个空行,如果不是第一次,您应该有条件地在内部for
循环之前添加一个空行
也应在<代码> Prtff <代码>中使用<换行符>和<代码> PROTLNE()/Script >空白行。并且,应该在代码< >代码>最后> <代码>块,或者使用RealthReals.在这里显示<>代码>最后/<代码>块解决方案,以java版本独立. < /P>
PrintWriter printWriter= new PrintWriter(new File("out4.txt"));
try {
boolean first = true;
for(int row=1;row<data.length;row++){
String playerName=data[row][0].toLowerCase();
if(playerName.indexOf(player)!=-1){
String[] fields=data[0];
String[] values=data[row];
if (first)
first = false;
else
printWriter.println();
for (int i=0;i<fields.length;i++){
printWriter.printf("%21s : %s%n",fields[i],values[i]);
}
}
}
} finally {
printWriter.close();
}
PrintWriter PrintWriter=新的PrintWriter(新文件(“out4.txt”);
试一试{
布尔值优先=真;
对于(int row=1;row,您可以在打印换行符的行周围包装一条if语句,以检查row
是否小于data.length
。此外,您还可以使用println()
而不是print(“\n”)
for(int row=1;row,因为您正在中使用新行
printWriter.printf("%21s : %s\n",fields[i],values[i]);
所以你可以跳过
printWriter.print("\n");
然后在printWriter中只保留一个\n…在for循环之外这将如何解决问题。该函数检查数组中玩家的名称,如果名称匹配,它将在输出文件中写入玩家的统计信息。输出应该是\n用于什么?(玩家1统计信息)空行(玩家2统计信息)空行要在两条记录之间添加额外的行,现在更好的建议是使用“使用资源进行尝试”不要最后使用
。@realpoint是真的,但很多提问的人仍然使用较旧版本的Java,因此没有版本信息,我不想介绍两种方法。由于Java 6从2013年起就不受支持,我认为现在使用Java 7习惯用法是安全的。非常感谢。我被卡住了在这里呆很长时间time@RealSkeptic你可能会想,但我昨天回答了另一个问题,并改为使用try with resource,结果发现这个家伙仍然使用Java 5。我认为重要的部分是close()
应该始终位于finally块中,无论是手动还是使用try-with-resources。如果最后一行的if
语句为false,这将无法正常工作。问题不是要求在末尾只打印一行新行吗?@realpoint那么行
在最后一次迭代中没有增加吗?我明白了。我想我会编辑回答只是为了避免将来读者混淆:)这应该是输出(玩家1统计)空行(玩家2统计)空行
printWriter.print("\n");