Как найти точку двумерного массива, используя класс Point в java.awt - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть двумерный массив символов в классе Map

public class Map {
    private char[][] map;
}

размером 5 строк и столбцов (определяется в конструкторе). У меня также есть метод в том же классе

public Point findStart(){
   Point location=new Point();
      for ( int i=0; i<map.length; i++){
          if(map[i][i]=='s')
      System.out.println( "The starting position is in " + location.x + location.y );
      }
        return location;
    }

, который перебирает массив, чтобы найти символ "s". Как только он найдет персонажа, я хочу использовать класс java.awt s Point, чтобы найти местоположение, где расположены символы. Как я могу получить точку для распечатки?

Как указал MaxG, в моем коде отсутствует цикл for. Новый метод

public Point findStart(){

        Point location=new Point();

        for ( int i=0; i<map.length; i++ ){
          for( int j=0; j<map[i].length; j++ )
           if(map[i][j]=='s')               
            location.getLocation();

      }

      System.out.println(location.x+","+location.y);
      return location;
    }

Я все еще получаю 0,0 как координаты.

ОБНОВЛЕНИЕ: Я думаю, что Кристофер Чемберлен поднимает правильную точку зрения. В проекте я читаю из файла .txt и помещаю каждый символ в массив.

//loads maps according to an integer parameter, which depends on what map the player is in (Map1, Map2, Map3, etc.)
    public void loadMap(int MapNum){

    //attemps to load .txt file
        try{
        String s="Map"+MapNum+".txt";
        File file=new File(s);
        Scanner sc=new Scanner(file);       

        while(sc.hasNextLine())
        {          
            for( int i=0; i<5; i++){

                char currentCharacter=sc.next().charAt(0);
                map[i][i]=currentCharacter;                           
            }  
        }      
        }
        catch(IOException exception){
            System.out.println(exception);
        }
    }

этот метод существует в том же классе. Возможно, я где-то напутал, читая каждый символ, но не могу понять где?

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

У меня недостаточно репутации, чтобы комментировать ... извините ...

Решение Jaydip выглядит как способ сделать это. Единственная причина, по которой это не сработает, это то, что map[i][j] == 's' никогда не возвращает true. Вы уверены, что map содержит 's'? Я думаю, что проблема связана с тем, как вы заполняете map.

0 голосов
/ 09 сентября 2018

Вы ищете что-нибудь подобное?

public Point findStart() {
    Point location = new Point();
    for (int i = 0; i < map.length; i++) {
        for (int j = 0; j < map[i].length; j++) {
            if (map[i][j] == 's') {
                location.setLocation(i, j);
                break;
            }
        }
    }
    System.out.println(location.x + "," + location.y);
    return location;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...