Java-чтение текстовых файлов и хранение их в виде массивов - PullRequest
3 голосов
/ 26 февраля 2012

У меня есть следующий кусок кода.Я не понимаю, почему он не работает.

Я бы очень признателен за помощь в этом.

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();
    }
}

Вывод выводит "ноль" несколько раз.

Кроме того, я хочу иметь возможность не только распечатывать коды, но и использовать массив кодов в классе 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

РЕДАКТИРОВАТЬ:

СпасибоТони и Черку ниже, чтобы помочь мне с моим идиотизмом.Я принимаю ответ Тони в основном потому, что он заставил меня задуматься, но ответ Чурка столь же ценен.

Для второй части моего вопроса (где я спросил о возможности использовать его в классе 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 ]

2 голосов
/ 26 февраля 2012
codes[i] = readCodes.nextLine();
            i++;
            System.out.println(codes[i]);

Вы печатаете коды [i ++]

1 голос
/ 26 февраля 2012

Посмотрите внимательно на ваш метод readCodesFile (). Посмотри на каждую строчку. Что это делает? Можете ли вы объяснить это нам?

...