Мне нужно прочитать из txt-файла имя «input.txt» и найти самый длинный путь A в массиве. У меня были ошибки с нулевыми исключениями, и теперь внезапно кажется, что он даже не читает txt.файл.Я запустил мой отладчик, и до сих пор не повезло, выясняя проблему.Вот мой код для класса карты.
import java.io.*;
import java.util.Scanner;
import java.util.List;
public class Map { //Class will create an array map of chars and find the
longest path of A
boolean [][] alreadyCounted;
int arrLength; //Used for the length of the array
int numOfArrays = 0; //Used for the columns of the array
char[][] arr; //char array used to create map
int currentLength; //the current length of the path of A
public void readDataFromFile(File file) throws IOException //Will read data from txt file and convert it into char array
{
File inFile = new File("input.txt");
Scanner scanner = new Scanner(inFile);
String[] size = scanner.nextLine().split("\\s");
if (scanner.hasNext()) //if it has another line then # of columns increases
{
numOfArrays= numOfArrays + 1;
}
for (int i = 0; i < numOfArrays; i++) //if it has another row # of rows increases
{
arrLength = arrLength + 1;
}
char [][] arr = new char[Integer.parseInt(size[0])][Integer.parseInt(size[1])];
for (int i = 0; i < arr.length; i++) //fills the array up with the chars
{
arr[i] = scanner.nextLine().toCharArray();
}
for (int j = 0; j < arr.length; j++)
{
for (int k = 0; k < arr[j].length; k++)
{
System.out.print(arr[j][k] + " ");
}
System.out.println();
}
scanner.close();
}
public int findLongestPathLength() //Creates boolean array to check for the longest path of A
{
int i, j, x, y;
int numOfAs = 0; //number of As in the current path
int longestPath = 0; //the longest path in the file
alreadyCounted = new boolean[numOfArrays][arrLength]; //boolean array to check if A's were already counted
for(i = 0; i < numOfArrays; i++)
{
for(j = 0; j < arrLength; j++ )
{
alreadyCounted[i][j] = false;
}
}
for(i = 0; i < numOfArrays; i++)
{
for(j = 0; j < arrLength; j++ )
{
if(arr[i][j] == 'A')
{
alreadyCounted[i][j] = true;
numOfAs = findPathLengthRecursive(i, j) + 1;
}
}
}
if(numOfAs > longestPath)
{
longestPath = numOfAs;
}
for(x = 0; x < numOfArrays - 1; x++)
{
for(y = 0; y < arrLength - 1; y++ )
{
alreadyCounted[x][y] = false;
}
}
currentLength = 0;
return longestPath;
}
public int findPathLengthRecursive(int i, int j) //Uses recursion to find the longest path of A
{
if (i < 0 || j < 0 || i >= arrLength )
{
return 0;
}
int result = 1 + Math.max(
Math.max(
findPathLengthRecursive(i - 1, j),
findPathLengthRecursive(i + 1, j)),
Math.max(
findPathLengthRecursive(i, j - 1),
findPathLengthRecursive(i, j + 1)));
return result;
}
}
А вот что у меня есть для тестового класса
import java.io.*;
import java.util.Scanner;
import java.util.List;
public class TestClass
{
public static void main(String[] args) throws IOException
{
Map p = new Map();
p.readDataFromFile();
p.findLongestPathLength();
p.findPathLengthRecursive(0, 0);
System.out.println(p.findLongestPathLength());
}
}
Я не думаю, что он читает текстфайл правильно