我需要从一个.dat文件中获取数据并放入“生命游戏”java程序的一个区域。基本上在这个游戏中,这是一个25x75的棋盘,在它的一些坐标中有单元格。如果他们没有邻居,所以我想把这个电路板放在一个[25 + 1] [75 + 1]阵列中,这样就可以使电路板边缘的单元更简单。从.dat文件创建和打印二维数组
我基本上有两种方法将.dat文件中的数据放入数组和打印数组的方法中。但是,打印时,由于某种原因,阵列只有24行。基本上所有的东西看起来都很好,除了它没有印出电路板的最后一行。任何想法代码出了什么问题?任何帮助表示赞赏。
继承人是我到目前为止有:
import java.util.Scanner;
import java.io.*;
public class GameOfLife {
final public int M = 25;
final public int N = 75;
public char oldGen [][] = new char [M+1][N+1];
public char newGen [][] = new char [M+1][N+1];
public GameOfLife(){
Scanner consoleReader = new Scanner(System.in);
char [][] initialGen = new char [M+1][N+1];
System.out.print ("Enter a filename: ");
String filename = consoleReader.next();
File file = new File(filename);
Scanner fileReader = null;
try{
fileReader = new Scanner (file);
}catch (Exception e) {
System.out.print("File " + file + " does not exist.");
System.exit(0);
}for (int i = 1; fileReader.hasNextLine() && i <= M; i++) {
char [] chars = fileReader.nextLine().toCharArray();
for(int j = 0; fileReader.hasNextLine() && j < N; j++){
initialGen[i][j] = chars[j];
}
}
System.out.println("Initial Generation:");
printGen(initialGen);
this.oldGen = initialGen;
consoleReader.close();
}
public void printGen(char gen[][]){
for(int i = 1; i <= M; i++){
for(int j = 0; j < N; j++){
System.out.print(gen[i][j]);
}
System.out.println();
}
}
这看起来错乍一看:'为(INT J = 0; fileReader.hasNextLine()'为什么你关心的*** ***内循环下一行?外部循环是,因为你在那里读取行并创建行,但是内部循环填充行,并且行已经被读入。 –
另外你的数组可能不应该有M + 1和N + 1的大小而是M和N的大小,并开始你的for循环在0. –
@HovercraftFullOfEels该死的.hasNextLine()修复它给我。谢谢,没有意识到它是如此简单,而且我会尝试谢谢你的时间! –