これは数独パズルソルバであると考えられており、パズルに2次元のArrayListを使用する必要があります。txtファイルから2次元のArrayListを書き込もうとしています
私は、txtファイルの数値を使用してArrayListを塗りつぶしています。私のテストクラスのコードは、9x9のArrayListを作成し、2次元のArrayListをどのように満たしているかをテストするために作成したループを使って、1から9までの数字で塗りつぶすことができます。私はtxtファイルに保存されている数字を取ると、彼らが読まれる順序でのArrayListを埋めるためにそれらを使用しようとすると、
import java.util.*;
import java.io.*;
public class test
{
public static void main(String args[])
{
ArrayList<ArrayList<Integer>> data = new ArrayList<ArrayList<Integer>>();
//Loop to add 9 rows
for(int i=1; i<=9; i++)
{
data.add(new ArrayList<Integer>());
}
//Loop to fill the 9 rows with 1-9
for(int k=0; k<9; k++)
{
for(int j=1; j<=9; j++)
{
data.get(k).add(j);
}
}
//Loop to print out the 9 rows
for(int r=0; r<9; r++)
{
System.out.println("Row "+(r+1)+data.get(r));
}
//Reads the file. Need to use this to set the array
File file = new File("F:\\Data Structures 244\\FINAL PROJECT\\SudokuSolver\\sudoku.txt");
try {
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
私の問題が来ます。私はこのコードを試して、txtファイルから数値を読み込み、それを繰り返して、ArrayListの最初の行にtxtファイルの最初の9個の数値を入力してから、次のこれらの数字を埋めるために、ArrayListと同様にtxtファイル内の行。
File file = new File("F:/Data Structures 244/FINAL PROJECT/SudokuSolver/sudoku.txt");
//Needs this try and catch
try {
Scanner solutionFile = new Scanner(file);
int cell=0;
while (solutionFile.hasNextInt())
{
//Loop to fill the 9 rows with the numbers from the sudoku.txt
for(int k=0; k<9; k++)
{
for(int j=1; j<=9; j++)
{
cell = solutionFile.nextInt();
data.get(k).add(cell);
}
}
}
solutionFile.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
for(int r=0; r<9; r++)
{
System.out.println("Row "+(r+1)+data.get(r));
}
私は私が最初にそのようにそれを試してみましたが、そのエラーを取得しますが、その後、私はすべて取ってみてください。これは、sudoku.txtファイル
346791528
918524637
572836914
163257489
895143762
427689351
239415876
684372195
751968243
あるcell = solutionFile.nextInt();
この行でException in thread "main" java.util.NoSuchElementException
を取得私のforループは一度に9つの数字だけを読み込みますが、ArrayListを印刷するかどうか、またはArrayListを追加した後に何を入れるべきかはArrayList全体が空白になります。
ファイルから数字を読み取って、ArrayListに入れて印刷しない問題は何ですか?
この宿題はありますか?ファイルがどこにあるのかわかります。 – Makoto