2016-10-25 4 views
0

Я создаю функцию для чтения лабиринта из файла файла, содержащего размер лабиринта [строка], [col], [Entrypoint_row], [EntryPoint_Col], [ExitPoint_row] [ExitPoint_Col], а затем лабиринты данныеЗаполнение данных из текстового файла в массив char в java

  • В настоящее время файл есть данные, такие как

    общественной ничтожной readMaze() бросает FileNotFoundException {

/используются для хранения точек входа и точки выхода

int EntryPoints[]=new int[2]; 
    int ExitPoints[]=new int[2]; 

    try 
    { 
     String line=""; 
     FileReader fr=new FileReader("maze.txt"); 
     BufferedReader br=new BufferedReader(fr); 
  • считывание данных в линии в виде строки
  • разделить строку переменной строки на массив символов обр
  • получить данные от arr до объявленных переменных

    line=br.readLine(); 
        String arr[]=line.split(" "); 
        row=Integer.parseInt(arr[0]); 
        col=Integer.parseInt(arr[1]); 
    
        this.AllocateMaze(row, col); //allocating size of maze row and col from file 
        EntryPoints[0]=Integer.parseInt(arr[2]); 
        EntryPoints[1]=Integer.parseInt(arr[3]); 
        ExitPoints[0]=Integer.parseInt(arr[4]); 
        ExitPoints[1]=Integer.parseInt(arr[5]); 
        System.out.println("row :"+row+"col :"+col); 
        System.out.println("exit points :"+EntryPoints[0]+" : "+EntryPoints[1]); 
        System.out.println("exit points :"+ExitPoints[0]+" : "+ExitPoints[1]); 
    
        int i=0,k=0; 
        boolean flag=true; 
    
  • Populating лабиринт [] [] с данными в файл полукокс по полукоксу

    while(!(line=br.readLine()).equals(null)) 
        { 
         k=0; 
         for(int j=0;j<row;j++) 
         { 
    

    Здесь я получил массив OUTOF занного исключения при г = 8, J = 8, почему в том, что я не могу найти способ чтобы справиться с этим нужна помощь

      maze[i][j]=String.valueOf(line.charAt(k));//here 
          k++; 
         } 
         i++; 
    
        } 
    
    } 
    catch(Exception e) 
    { 
        e.printStackTrace(); 
    } 
    

    }

ответ

1

Добавили ли вы место на точке выхода? Из того, что я могу понять, исключение ArrayOutOfBound, скорее всего, вызывается линией .charAt (k), и в этом случае «k» составляет около 9, а строка имеет длину 9 символов, поэтому вы получаете это исключение. Возможно, вам нужно, чтобы строка была ровно 10 символов, поэтому вы должны добавить пробелы или конкретные символы, такие как «x».

+0

да это была ошибка, но улица я получил нулевой указатель за исключением ** в то время как (! (line = br.readLine()). equals (null)) ** есть ли какие-либо проблемы в этой строке? – striker

+0

Да, есть проблема. Вы не можете сравнить значение null с 'equals', потому что ваше значение равно null, поэтому вы получаете NPE. Просто используйте while (! ((Line = br.readLine()) == null)) –

+0

Это работало ** while ((line = br.readLine())! = Null) ** thanks alot **:) * * – striker

0

Где вы начинаете maze[][]? Столбцы и строки 10, считанные из файла, так же как и размер вашего массива? Потому что, если он выдает исключение в 8, как вы говорите, он кажется 2 коротким.

+0

его метод в ** mazeGame ** класс все эти атрибуты находятся в классе и успешно инициализируются, я проверяю, что путем печати ** строки col ** и ее ** 10,10 ** – striker

0

Изменить

while(!(line=br.readLine()).equals(null)) 

в

while((line=br.readLine()) != null) 

и

for(int j=0;j<row;j++) 

в

for(int j=0;j<col;j++) 
Смежные вопросы