Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用BufferedReader显示多行时出现问题_Java_Bufferedreader - Fatal编程技术网

Java 使用BufferedReader显示多行时出现问题

Java 使用BufferedReader显示多行时出现问题,java,bufferedreader,Java,Bufferedreader,我试图显示多行,但是没有得到任何输入,我得到的只是一个“null” 每次调用line=display.readLine(),它丢弃了行的旧值 要获取文件的全部内容,必须保存它们或在读取时将其打印出来 要保存它们,请尝试设置如下内容变量 public void display() { BufferedReader display; String contents = ""; try { display = new BufferedReader(new

我试图显示多行,但是没有得到任何输入,我得到的只是一个“null”


每次调用
line=display.readLine()
,它丢弃了
行的旧值

要获取文件的全部内容,必须保存它们或在读取时将其打印出来

要保存它们,请尝试设置如下内容变量

public void display()
{
    BufferedReader display;
    String contents = "";
    try
    {
        display = new BufferedReader(new FileReader(fileName));
        while(line != null)
        {
            line = display.readLine();
            contents += line + "\n";
        }
        display.close();
    }
    catch(IOException e){}

    c.println(fileName + " display: ");
    c.println(contents);
}
上面的代码将获得每行的内容,包括null。您可以使用if语句删除结尾处的null值,或者稍微更改while循环

我发现压缩while循环并对每一行进行处理更容易一些

BufferedReader reader = new BufferedReader(new FileReader(filename));
String contents = "";
String line;
while((line = reader.readLine()) != null)
    contents += line + "\n"; //or doStuff(line); if you process data line by line
System.out.println(contents);
比while循环更有意义的是使用for循环

for(String line = reader.readLine(); line != null; line = reader.readLine())
    contents += line + "\n";

每次调用
line=display.readLine()
,它丢弃了
行的旧值

要获取文件的全部内容,必须保存它们或在读取时将其打印出来

要保存它们,请尝试设置如下内容变量

public void display()
{
    BufferedReader display;
    String contents = "";
    try
    {
        display = new BufferedReader(new FileReader(fileName));
        while(line != null)
        {
            line = display.readLine();
            contents += line + "\n";
        }
        display.close();
    }
    catch(IOException e){}

    c.println(fileName + " display: ");
    c.println(contents);
}
上面的代码将获得每行的内容,包括null。您可以使用if语句删除结尾处的null值,或者稍微更改while循环

我发现压缩while循环并对每一行进行处理更容易一些

BufferedReader reader = new BufferedReader(new FileReader(filename));
String contents = "";
String line;
while((line = reader.readLine()) != null)
    contents += line + "\n"; //or doStuff(line); if you process data line by line
System.out.println(contents);
比while循环更有意义的是使用for循环

for(String line = reader.readLine(); line != null; line = reader.readLine())
    contents += line + "\n";

这里缺少代码,什么是c?线路分配在哪里?你所说的一切都是空的是什么意思?从哪里来?这是关于pastebin的完整代码。@GilLitvak,请发布一篇文章,以便我们能够关注核心问题。这里缺少代码,什么是c?线路分配在哪里?你所说的一切都是空的是什么意思?从哪里来?这是关于pastebin的完整代码。@GilLitvak,请发表一篇文章,这样我们可以专注于核心问题。@ankhzet不是个坏主意,在文章中添加了它。通常我只是将其传递给另一个函数,或者为我构建一个带有数据名的LinkedList。另外,我想知道当(line!=null){line=display.readLine()时如何
59顺便说一句,
对于
-版本看起来不太好,imho.
而((line=reader.readLine())!=null)
非常频繁地使用,好吧。@ankhzet我也经常使用压缩while循环,但它确实遵循for循环的确切格式,所以我添加了它in@ankhzet不错的主意,添加了它。通常我只是将它传递给另一个函数或为我构建一个带有数据名的LinkedList。另外,我想知道如何
while(line!=null){line=display.readLine();…
甚至可以工作…呃,如果在方法调用的开始处
line==null
,循环将永远不会启动,对吗?这样的错误…@ankhzet我最好的猜测是,行是预先定义为空字符串的。只是检查了他的pastebin,它是在顶部定义的(对于一个临时变量来说这很奇怪)作为“顺便说一句,
for
-版本看起来不太好,imho.
while((line=reader.readLine())!=null)
使用得非常频繁,好吧。@ankhzet我也更经常地使用压缩的while循环,但它确实遵循了for循环的确切格式,所以我添加了它