Java读取文本文件并将它们存储为数组

时间:2012-02-26 05:47:33

标签: java file io java.util.scanner

我有以下代码。我不明白为什么它不起作用。

我真的很感激这方面的帮助。

import java.util.Scanner;
import java.io.*;

class ReadFiles {
    String [] codes = new String[99];
    int i = 0;

    private Scanner readCodes;

    public void openCodesFile() {
        try {
            readCodes = new Scanner(new File("C:/Users/Carlo/Desktop/Files/codes.txt"));
        } catch (Exception e) {
            System.out.println("Could not locate the data file!");
        }
    }

    public void readCodesFile() {

        while(readCodes.hasNext()) {
            codes[i] = readCodes.nextLine();
            i++;
            System.out.println(codes[i]);
        }
    }

    public void closeCodesFile() {
        readCodes.close();
    }
}

class NewHardware {
    public static void main(String[] args) {
        ReadFiles codesRead = new ReadFiles();
        codesRead.openCodesFile();
        codesRead.readCodesFile();
        codesRead.closeCodesFile();
    }
}

输出多次打印出“null”。

此外,我希望不仅可以打印出代码,还可以使用NewHardware类中的代码数组并对其进行操作(打印出来,截断它等)。

我正在考虑使用readCodesFile()执行以下操作:

public String readCodesFile() {

        while(readCodes.hasNext()) {
            codes[i] = readCodes.nextLine();
            i++;
            System.out.println(codes[i]);
        }
                    return (codes[i]);
    }

或者其他东西,但它还没有奏效。我是在正确的轨道上吗?

哦,只是想补充说明文字包含以下内容:

G22
K13
S21
I30
H15
N23
L33
E19
U49

修改

感谢Tony和Churk在下面帮助我解决了我的愚蠢行为。我接受托尼的回答基本上是因为他挑战我思考但是Churk的回答同样有价值。

对于我的问题的第二部分(我询问能否在NewHardware课程中使用它),我做了以下内容:

class NewHardware {
    public static void main(String[] args) {
        ReadFiles codesRead = new ReadFiles();

        codesRead.openCodesFile();

        codesRead.readCodesFile();

        for (int i = 0; i < 9; i++) {
            System.out.println("\n\n" + codesRead.codes[i]);
        }

        codesRead.closeCodesFile();
    }
}

这当然不是最终的程序代码,但这有助于我获得基本的想法。希望这也有助于其他人。

2 个答案:

答案 0 :(得分:2)

codes[i] = readCodes.nextLine();
            i++;
            System.out.println(codes[i]);

您正在打印代码[i ++]

答案 1 :(得分:1)

仔细查看readCodesFile()方法。看看每一条线。它在做什么?你能解释一下吗?