2009-11-11 1 views
1

여기 내가 자바로 작성한 코드가 맞다고 생각합니다. 결과를 어떻게 설정해야할지 모르겠습니다. 당신은 단지 하나 개의 행 배열 한 열 배열이 있다면 나는 당신이java의 2-d 어레이에서 특정 col, row와 연관된 데이터 값을 어떻게 얻습니까?

foo bar baz 
    sna 
    fu 

하지만 당신이 정말로 원하는 것은 뭔가 뭔가를 가지고있는 특정 행 열

public int getElement(int row,int col){ 
    int result = 0; 
    if(((row>=1) && (row <=rowArray.length))&&((col>=1) && (col <=colArray.length))){ 
     result = ?? 
    } 
    return result; 
}    
+0

스파 스 2 차원 배열을 구현하려고합니까? 당신은 Map <쌍 , int>을 사용하여이를 수행 할 수 있습니다. –

+0

Ben은 "2-d 행렬을 구현하기 위해 연결된 목록을 만들고 싶습니다."라고 말합니다. 나는 궁금해 할 것이다, 왜? 스파 스 어레이 여야합니다. 하지만이 스 니펫은 연결된 목록과 관련이 없습니다. 흠. – Don

답변

2

왜 2 차원 어레이를 만들기 위해 2 개의 개별 어레이가 있습니까?

실제로 직사각형이 아닌 배열이있는 경우
public int array2D[10][15]; // 10 row and 15 col 

public int getElementAt(int rowIndex, int colIndex) 
{ 
    int ret; 
    if(rowIndex >= 0 && rowIndex < array2D.length && colIndex >= 0 && colIndex < array2D[0].length) 
    { 
     ret = array2D[rowIndex][colIndex]; 
    } 
    else 
    { 
     // Throw something according to what you want or exit or special return value 
    } 
    return ret; 
} 
+0

2-d 행렬을 구현하는 연결된 목록을 만들려고합니다. 열에 연결된 목록과 행에 하나씩 –

+0

연결된 목록이 있어도 모든 행에 대해 열이 필요합니다. 2가 아닌 m x n 개의 콜렉션이 필요합니다. –

1

와 관련된 요소를 반환하려면

class MyClass { 
    String myArray[][] = new String[3][3]; 

    MyClass() { 
    // assign data into myArray 
    } 

    String getAt(int i, int j) { 
    if ((i >= 0) && (i < myArray.length) && 
     (j >= 0) && (j < myArray[i].length)) { 
     return myArray[i][j]; 
    } 
    return null; 
    } 
} 
0 :이

foo bar baz 
    sna rah boo 
    fu man chu 

처럼 당신 같은이 뭔가를 선언 할 것

0

, 당신은 rowArray [행] .length 대신 colArray.length을 확인해야합니다 :

수업 내용이 같아야합니다.

그런 다음 result = rowArray [row] [col];

하지만 실제로 rowArray 선언과 colArray 선언을 공개하지 않았기 때문에 우리 모두는 추측하고 있습니다.

+0

public MatrixEntry [] rowArray; {rowArray = null; } public MatrixEntry [] colArray; {colArray = null; } 2-d 행렬을 구현하는 링크드 목록을 만들고 싶습니다. 두 개의 1 차원 배열을 사용하여이 작업을 수행 할 수 있습니까? 또는 2-d 어레이를 사용해야합니까? –

0

이 먼저가, 배열이 0 1. 일반적인 관용구에서 색인하는 것은 같은 "만약 (행> = 0 & & 행 < rowArray.length) {...}"입니다.

또한 간단한 식에서는 괄호가 많이 필요하지 않습니다. 그것은 표현을 지나치게 복잡하게 만든다. 단순하게 유지하십시오. 당신이 정말로 원한다면 각각의 개인적인 비교를 그룹화 할 수는 있지만 아마 그렇지 않을 것입니다. 정확히 당신이 원하는, 메신저 확실하지 귀하의 의견을 읽기

public int getElement(int row, int col) { 
    int result = 0; 
    if ((row >= 0) && (row < rowArray.length) && 
     (col >= 0) && (col < colArray.length)) { 
     result = rowArray[row][col]; 
    } 
    return result; 
} 
+0

이 코드에서 'colArray'가 무엇을하는지 모릅니다. –

0

: 같은

마지막으로, 코드가 보일 것이다. 나는를 사용하는 것이 좋습니다 것

그렇다면 .. ItemE, ItemF :
목록 1 : ItemA, ItemB, ItemC ...
목록 2 : ItemD ...
목록 3
당신이 뭔가를 원하십니까 LinkedList의 배열 (1 차원)입니다. 그런 식으로 배열 인덱스는 행을 나타내며 목록은 해당 행의 열을 나타냅니다.

관련 문제