3

我不明白为什么我的程序无法运行。它编译但没有打印。我在文件中有一个 5 个字符的单词。我需要从该文件中读取行,然后将其拆分为 char 数组,然后我想将其打印出来。谢谢!

import java.io.FileReader;
import java.io.IOException;
import java.io.BufferedReader;

public class test {
    public static void main(String[] args)
    {

        BufferedReader line = null;
        char[] array = new char[7];

        try{

            line = new BufferedReader(new FileReader(args[0]));

            String currentLine;
            while((currentLine = line.readLine()) != null)
            {
                array = currentLine.toCharArray();
            }

            for(int i = 0; i < array.length; i++)
            {
                System.out.print(array[i]);
            }

        }//try

        catch(IOException exception)
        {
            System.err.println(exception);
        }//catch

        finally
        {
            try 
            {
                if(line != null) 
                    line.close();
            }//try

            catch(IOException exception)
            { 
                System.err.println("error!" + exception);
            }//catch

        }//finally
    } // main
} // test
4

2 回答 2

3

您的 while 循环会跳过除最后一行之外的每一行,因此您的最后一行可能为空。要显示您可能拥有的每一行:

while ((currentLine = line.readLine()) != null) {
    array = currentLine.toCharArray();
    for (int i = 0; i < array.length; i++) {
        System.out.print(array[i]);
    }
    System.out.println();
}

或者,如果您只有 1 行,您可以简单地使用:

String currentLine = line.readLine(); 
...
于 2012-09-07T20:00:06.823 回答
0

你的程序只打印最后一行

您必须循环打印。

while (....!=null)
{
 array = currentLine.toCharArray();

for(int i = 0; i < array.length; i++)
   {
      System.out.print(array[i]);
   }


}

如果上述不是问题,请检查您的文件权限。

检查您的系统可能是由于文件权限,程序无法从文件中读取。

于 2012-09-07T20:06:39.033 回答