在另一种方法中使用Array

时间:2015-04-21 14:16:55

标签: java arrays

我正在读取文件中的一些数据并将其存储为数组。我想知道是否可以通过其他方法访问存储文件数据的数组?

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;


public class Cards {
    private static final String Cards_CARDS_DATA_FILE = "./cards.txt";
    public char[] cardStore;

    public void loadCards() throws IOException {


        FileReader readingFile = new FileReader(Cards_CARDS_DATA_FILE);
        BufferedReader File = new BufferedReader(readingFile);
        for (String line; (line = File.readLine()) != null;) {



//copying the stuff in cards.txt to an array. Printed out just to check it actually works.
            cardStore = line.toCharArray();
            System.out.println(cardStore);

        }

        File.close();

    }

    public void tester() throws IOException {

        System.out.println(cardStore);

    }
}

2 个答案:

答案 0 :(得分:2)

您可以从类的任何实例范围的上下文中访问和打印实例字段。

现在,要打印其填充的内容,您必须首先填充它,这在loadCards()中完成(因此该方法需要成功调用 - 即在I / O方面好)。

只要成功调用了loadCards()(即文件操作和数组填充成功),tester()应该没有问题打印反映文件内容的cardStore的实际内容。

请注意,您希望使用Arrays.toString来打印人类可读的数组表示。

答案 1 :(得分:0)

简答: 对于同一个类内的方法,类实例变量始终可以访问。

一些额外信息

public class Cards {
    private static final String Cards_CARDS_DATA_FILE = "./cards.txt";
    private char[] cardStore;
public void loadCards() throws IOException {
    FileReader readingFile = new FileReader(Cards_CARDS_DATA_FILE);
    BufferedReader File = new BufferedReader(readingFile);
    for (String line; (line = File.readLine()) != null;) {

        cardStore = line.toCharArray();
        System.out.println(cardStore);
    }
    File.close();
}

public char[] getCardStore(){
   return this.cardstore;
}

public void setCardStore(char[] cardstore){
   this.cardstore = cardStore;
}

}

这样你就有了正确的封装。 (公共变量不是首选) 您现在可以在此课程之外访问卡片商店。

<强>加成

public void tester() throws IOException {

        System.out.println(cardStore);

    }

可能/应该更像这样:

public void tester() throws IOException {
    for(char card:cardStore){
        System.out.println("test info: " + card);
    }
}

在第一种方式中,您将打印char []对象的哈希码,而不是存储在其中的数据。如果您打算打印数据。如果您只想查看它是否已填满,则可以更轻松地完成。

public void tester() throws IOException {
    if(cardStore != null && cardStore.length > 0){
        System.out.println("test info: cardStore has " + cardStore.length + " rows.");
    }
}