2013-04-02 3 views
0

У меня есть этот код:Извлечение значения из массива в Java

_leftArray[0] = _square[6][4]; 
_leftArray[1] = _square[8][4]; 
_leftArray[2] = _square[9][5]; 

Я хочу, чтобы иметь возможность извлекать значения из массива. Я хотел бы написать метод, который принимает позицию массива в качестве аргумента и возвращает координаты. Поэтому, если метод был вызван returnCoordinatesFromArray, я мог бы ввести returnCoordinatesFromArray [1] и вернуть 6 в качестве переменной и 4 в качестве переменной, поэтому я мог бы использовать их в другом методе.

+3

Вы хотите сказать, что хотите вернуть 2 значения? – Smit

+0

Вы хотите, чтобы вы хотели returnCorrdinatesFromArray (0) для извлечения {6, 4} –

ответ

0

Сделайте двойной цикл и сохраните позиции x и y.

_square value; 
int posX=0; 
int posY=0; 
for(int i=0; i<arr.length; i++) { 
    for(int j=0; j<arr.length; j++) { 
     if(arr[i][j]==value) { 
     posX=i; 
     posY=j; 
     } 
    } 
} 
1

Если они статичны, жестко закодированные значения, то почему бы не сделать что-то вроде этого:

Map<Integer, int[]> indexToCoordinateMap = new LinkedHashMap<Integer, int[]>(); 
indexToCoordinateMap.put(0, new int[]{6, 4}); 
indexToCoordinateMap.put(1, new int[]{8, 4}); 
indexToCoordinateMap.put(2, new int[]{9, 5}); 

Тогда вам не нужен метод. Вы можете просто получить массив значений, где индекс 0th - это координата x, а индекс 1st - это координата y. Конечно, это по соглашению. Если вы хотите быть более конкретным, вы можете использовать Point и сделать что-то вроде этого:

Map<Integer, Point> indexToPointMap = new LinkedHashMap<Integer, Point>(); 
indexToPointMap.put(0, new new Point(6, 4)); 
indexToPointMap.put(1, new Point(8, 4)); 
indexToPointMap.put(2, new Point(9, 5)); 

Тогда вы можете просто сделать:

Point point = indexToPointMap.get(0); 
0

"Я мог бы ввести returnCoordinatesFromArray [1] и возвращение 6 как переменная и 4 как переменная " По дизайну в Java невозможно создать сразу два значения. Если вам нужно сделать что-то вроде этого вы можете либо создать свой собственный маленький объект, который содержит две переменные:

public class Tupel{ 
    private int firstIndex; 
    private int lastIndex; 

    public Tupel(int firstIndex, int lastIndex){ 
     this.firstIndex=firstIndex; 
     this.lastIndex=lastIndex; 
    } 

    public int getFirstIndex(){ 
     return this.firstIndex; 
    } 
    // the same for lastIndex 
} 

Затем вы храните Tupels в массиве Tupel[] leftArray, где, например

leftArray[1] = new Tupel(6,4); 

Или вы используйте существующие классы, такие как Point, если они соответствуют вашим потребностям.

Смежные вопросы