我需要從一個.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()修復它給我。謝謝,沒有意識到它是如此簡單,而且我會嘗試謝謝你的時間! –