System.out.println打印字符串但System.out.print不打印

nic*_*y97 0 java printing file

我试图将单词存储在java数组中由昏迷分隔
的文件中.文件是

年龄,收入,学生,信用评级,类:购买电脑

青年,高,不,公平,无

青年,高,不,优秀,无

中年,高,不,优秀,没有

高级,中等,不,公平,是

高级,低,是的,公平的,是的

高级,低,是的,优秀的,没有

public class Test {
  public static void main(String args[]) throws FileNotFoundException, IOException{ 
    FileInputStream f=new FileInputStream("F:\\pr\\src\\dmexam\\inp2.txt");
    int size,nr=7,nc=5,j=0,i=0;
    char ch;
    String table[][]=new String[nr][nc];
    size=f.available();
    table[0][0]=new String();
    while(size--!=0){
         ch=(char)f.read();
         if(ch=='\n')
         {
             i++;
             if(i>=nr)
                 break;
             table[i][0]=new String();
             j=0;
             continue;

         }
         if(ch==',')
         {     
            j++;
            table[i][j]=new String();
            continue;
         }
          table[i][j]+=ch;
    }
    f.close();
    System.out.println("The given table is:::---");
    for(i=0;i<nr;i++){
       for(j=0;j<nc;j++){ 
         System.out.print("  "+table[i][j]);
         System.out.print("  ");
       }
     }
 }  
}
Run Code Online (Sandbox Code Playgroud)

但输出是

给定的表是::: ---

但如果for改变了这样的话

System.out.println("The given table is:::---");
for(i=0;i<nr;i++){
    for(j=0;j<nc-1;j++){ 
        System.out.print("  "+table[i][j]);

        System.out.print("  ");
    }
    System.out.println(table[i][nc-1]);
 }
Run Code Online (Sandbox Code Playgroud)

输出是

给定的表是::: ---年龄收入学生信用评级类:购买计算机

青年高不公平

青年高无优秀没有

中年高没有优秀没有

高级媒体不公平是的

高低是公平的

高低是的,没有

我想知道"为什么System.out.print不工作?"...

ysh*_*vit 8

该PrintStream的System.out使用有一个内部缓冲区,因为写入stdout是相对昂贵的-你不一定想这样做的每个字符.写入换行符时会自动刷新该缓冲区,这就是println导致文本出现的原因.如果没有该换行符,您的字符串就会位于缓冲区中,等待刷新.

您可以通过调用强制手动刷新System.out.flush().