.datファイルからデータを取り出し、 "game of life" Javaプログラム用の領域に入れる必要があります。基本的にこのゲームでは、その座標の一部に細胞を持つ25x75のボードが使われています。彼らが隣人を持たない場合、いくつかの細胞が死んでいるということについて、この全部が死に至るので、私は[25 + 1] [75 + 1]配列にボードを置こうとしているので、ボードの端にある細胞の方が簡単です。.datファイルから2D配列を作成して印刷する
基本的には、.datファイルのデータを配列に格納する2つのメソッドと、配列を出力するメソッドがあります。しかし、何らかの理由で配列が印刷されると、配列は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のサイズで、0からループを開始してください。 –
@HovercraftFullOfEels .hasNextLine()を取り除くと、私のために修正されました。ありがとうございました。あなたのお時間をありがとう! –