如何在JAVA列表中存储文本文件的第一行

如何在JAVA列表中存储文本文件的第一行,java,Java,我不知道我的代码出了什么问题,当我使用list.get(0)时,它应该显示我文本文件的第一行,但我总是得到第二行 String everything; ArrayList<String> list = new ArrayList<String>(); try(BufferedReader br = new BufferedReader(new FileReader("lol/new.txt"))) { StringBuilder sb = new StringB

我不知道我的代码出了什么问题,当我使用
list.get(0)
时,它应该显示我文本文件的第一行,但我总是得到第二行

String everything;
ArrayList<String> list = new ArrayList<String>();

try(BufferedReader br = new BufferedReader(new FileReader("lol/new.txt"))) {
    StringBuilder sb = new StringBuilder();
    String line = br.readLine();

    while (line != null) {
        sb.append(line);
        sb.append(System.lineSeparator());
        line = br.readLine();
        list.add(line);
    }

    everything = sb.toString(); // maybe I'll need this :D 
}
当我做一个简单的
System.out.println(list.get(0))我得到的是
55N
而不是
1010
我做错了什么

试试这个

    String everything;
    ArrayList<String> list = new ArrayList<String>();

    try(BufferedReader br = new BufferedReader(new FileReader("lol/new.txt"))) {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine(); // Read first line

        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            list.add(line); // Line order has changed!
            line = br.readLine(); // Read next line
        }
        everything = sb.toString(); // maybe I'll need this :D 

    }
字符串所有内容;
ArrayList=新建ArrayList();
try(BufferedReader br=newbufferedreader(newfilereader(“lol/new.txt”)){
StringBuilder sb=新的StringBuilder();
String line=br.readLine();//读取第一行
while(行!=null){
某人附加(行);
sb.append(System.lineSeparator());
list.add(行);//行顺序已更改!
line=br.readLine();//读取下一行
}
everything=sb.toString();//也许我需要这个:D
}
试试这个

    String everything;
    ArrayList<String> list = new ArrayList<String>();

    try(BufferedReader br = new BufferedReader(new FileReader("lol/new.txt"))) {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine(); // Read first line

        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            list.add(line); // Line order has changed!
            line = br.readLine(); // Read next line
        }
        everything = sb.toString(); // maybe I'll need this :D 

    }
字符串所有内容;
ArrayList=新建ArrayList();
try(BufferedReader br=newbufferedreader(newfilereader(“lol/new.txt”)){
StringBuilder sb=新的StringBuilder();
String line=br.readLine();//读取第一行
while(行!=null){
某人附加(行);
sb.append(System.lineSeparator());
list.add(行);//行顺序已更改!
line=br.readLine();//读取下一行
}
everything=sb.toString();//也许我需要这个:D
}

请参考我对代码的评论

    String everything;
    ArrayList<String> list = new ArrayList<String>();

    try(BufferedReader br = new BufferedReader(new FileReader("lol/new.txt"))) {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();

        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            //up to this point variable line has the line number 1
            //first line is overwritten with line number 2
            line = br.readLine();
            //when you add the line to your ArrayList, line variable contains the second line
            list.add(line);
        }
        everything = sb.toString();

    }
字符串所有内容;
ArrayList=新建ArrayList();
try(BufferedReader br=newbufferedreader(newfilereader(“lol/new.txt”)){
StringBuilder sb=新的StringBuilder();
String line=br.readLine();
while(行!=null){
某人附加(行);
sb.append(System.lineSeparator());
//到目前为止,变量行的行号为1
//第一行被行号2覆盖
line=br.readLine();
//将该行添加到ArrayList时,line变量包含第二行
列表。添加(行);
}
一切=某人做某事;
}

请参考我对代码的评论

    String everything;
    ArrayList<String> list = new ArrayList<String>();

    try(BufferedReader br = new BufferedReader(new FileReader("lol/new.txt"))) {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();

        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            //up to this point variable line has the line number 1
            //first line is overwritten with line number 2
            line = br.readLine();
            //when you add the line to your ArrayList, line variable contains the second line
            list.add(line);
        }
        everything = sb.toString();

    }
字符串所有内容;
ArrayList=新建ArrayList();
try(BufferedReader br=newbufferedreader(newfilereader(“lol/new.txt”)){
StringBuilder sb=新的StringBuilder();
String line=br.readLine();
while(行!=null){
某人附加(行);
sb.append(System.lineSeparator());
//到目前为止,变量行的行号为1
//第一行被行号2覆盖
line=br.readLine();
//将该行添加到ArrayList时,line变量包含第二行
列表。添加(行);
}
一切=某人做某事;
}

检查代码中的注释

    String everything;
    ArrayList<String> list = new ArrayList<String>();

    try(BufferedReader br = new BufferedReader(new FileReader("lol/new.txt"))) {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine(); // You read first line of file
                                     // which is discarded.

        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            line = br.readLine(); // You read second, and the rest of lines of file.
                                  // First line is discarded here.
            list.add(line);       // Add to list.
        }
        everything = sb.toString(); // maybe I'll need this :D 

    }
字符串所有内容;
ArrayList=新建ArrayList();
try(BufferedReader br=newbufferedreader(newfilereader(“lol/new.txt”)){
StringBuilder sb=新的StringBuilder();
String line=br.readLine();//读取文件的第一行
//它被丢弃了。
while(行!=null){
某人附加(行);
sb.append(System.lineSeparator());
line=br.readLine();//读取第二行以及文件的其余行。
//第一行在这里被丢弃。
添加(行);//添加到列表。
}
everything=sb.toString();//也许我需要这个:D
}

检查代码中的注释

    String everything;
    ArrayList<String> list = new ArrayList<String>();

    try(BufferedReader br = new BufferedReader(new FileReader("lol/new.txt"))) {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine(); // You read first line of file
                                     // which is discarded.

        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            line = br.readLine(); // You read second, and the rest of lines of file.
                                  // First line is discarded here.
            list.add(line);       // Add to list.
        }
        everything = sb.toString(); // maybe I'll need this :D 

    }
字符串所有内容;
ArrayList=新建ArrayList();
try(BufferedReader br=newbufferedreader(newfilereader(“lol/new.txt”)){
StringBuilder sb=新的StringBuilder();
String line=br.readLine();//读取文件的第一行
//它被丢弃了。
while(行!=null){
某人附加(行);
sb.append(System.lineSeparator());
line=br.readLine();//读取第二行以及文件的其余行。
//第一行在这里被丢弃。
添加(行);//添加到列表。
}
everything=sb.toString();//也许我需要这个:D
}

问题在于,在
循环之外,当你已经拉出第一行时,在
循环内部,当
循环迭代时,你永远不会使用你拉出的第一行

尝试在
while
循环的末尾拉下一行,这样也可以使用while循环前面拉的

while (line != null) {
    sb.append(line);
    sb.append(System.lineSeparator());
    list.add(line);
    line = br.readLine();
}

问题是,在
while
循环之外,您已经拉上了第一行,而在
while
循环的迭代内部,您从未使用您拉的第一行

尝试在
while
循环的末尾拉下一行,这样也可以使用while循环前面拉的

while (line != null) {
    sb.append(line);
    sb.append(System.lineSeparator());
    list.add(line);
    line = br.readLine();
}

您正在重复读取文件
String line=br.readLine(),后跟
line=br.readLine()
,使用
while((line=br.readLine)!=null){…
而不是您正在双击文件
String line=br.readLine();
,后跟
line=br.readLine();
,使用
while((line=br.readLine)!=null){…
instead您所说的
行号更改是什么意思?
…ArrayList保存插入顺序,因此这不是一个issue@Manoj顺序改变了。现在,先把它添加到列表中,然后读下一行。你应该指出他从文本文件中读取第二行来覆盖变量的错误。好的,我看到了……现在你已经完成了太好了!!你所说的更改行号是什么意思?
…ArrayList保存插入顺序以便