从.txt读取行并存储到不同的整数中

时间:2016-02-29 18:54:41

标签: java

所以我得到了以下代码:

    BufferedReader ind = new BufferedReader(new FileReader("Billet_priser.txt"));
    String line = ind.readLine();
    String[] bits = line.split(" "); // opdel i bidder efter mellemrum

    line = ind.readLine();
    bits = line.split(" ");
    Ticket1 = Integer.parseInt(bits[1]);
    line = ind.readLine();
    line.split(" ");
    Ticket2 = Integer.parseInt(bits[1]);
    line = ind.readLine();
    line.split(" ");
    ...
    line = ind.readLine();
    line.split(" ");
    Ticketn = Integer.parseInt(bits[1]);
}

使用以下文字从.txt文件中读取:

Ticket1 99
Ticket2 35
...
Ticketn 60

尝试在每行中的空格之后获取第二位以存储在票证整数中。

问题是它只存储第一个读取的" 99"进入所有票证整数。 我希望它在将第一个int存储到第一个票证后读取下一行,然后读取下一行,依此类推。

3 个答案:

答案 0 :(得分:2)

您继续使用此bits值来获取数字:

Ticket1 = Integer.parseInt(bits[1]);

但是你只能从第一行设置一次

String[] bits = line.split(" ");     
while (line != null) {
    // bits is never updated in here
}

听起来你想简单地重复那行代码来更新bits变量:

line = ind.readLine();
bits = line.split(" ");
Ticket1 = Integer.parseInt(bits[1]);

(另请注意,您的循环没有多大意义,因为看起来您已经手动使用重复的代码行读取每一行而不是实际循环。上面的代码行,或任何构成循环的一次迭代,只需要存在一次。循环被设计为一遍又一遍地重复该任务。)

答案 1 :(得分:1)

您的实施有点偏。你想制作一个票据容器并使用循环来填充它。

List<Integer> tickets = new ArrayList<>();
try (BufferedReader ind = new BufferedReader(new FileReader("Billet_priser.txt")){
    String line = null;
    while ((line = ind.readLine()) != null) {
        String[] bits = line.split(" ");     
        tickets.add(Integer.parseInt(bits[1]));
    }
} 
catch (IOException e) {
    e.printStackTrace();
}

答案 2 :(得分:0)

您可能希望使用Scanner对象而不是BufferedReader。像这样构造它:

Scanner scannerObject = new Scanner(new File("Billet_priser.txt");

然后修复您的while循环以执行更类似的操作:

while (scannerObject.hasNextLine()){
    String[] line = scannerObject.nextLine().split(" ");
    int currentTicket = Integer.parseInt(line[1]);
}

您还可以将票号存储在ArrayList构造中,如下所示:

ArrayList<Integer> tickets = new ArrayList<>();

然后你的while循环看起来像这样:

while (scannerObject.hasNextLine()){
    String[] line = scannerObject.nextLine().split(" ");
    tickets.add(Integer.parseInt(line[1]));
}