我正在读取文件中的一些数据并将其存储为数组。我想知道是否可以通过其他方法访问存储文件数据的数组?
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);
}
}
答案 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.");
}
}