2009-11-11 4 views
1

voici le code que j'ai écrit en java je pense qu'il est juste. Je ne suis pas sûr de ce que le résultat à définir? Je veux revenir l'élément associé à la colonne spécifique de la ligneComment obtenez-vous une valeur de données associée à un col, une ligne spécifique d'un tableau 2D dans java?

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

Essayez-vous d'implémenter un tableau 2d clairsemé? Vous pouvez utiliser une carte , int> pour ce faire. –

+0

Ben dit: "Je veux faire des listes liées pour implémenter une matrice 2-D." Je me demande, pourquoi? Doit être un tableau clairsemé. Mais cet extrait n'est pas lié à des listes liées. Hmmm. – Don

Répondre

2

Pourquoi avez-vous 2 tableaux séparés pour faire un tableau 2d?

Le contenu de classe devrait être comme:

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

J'essaie de faire une liste chaînée en implémentant une matrice 2-d. avec une liste liée pour la colonne et une pour la ligne –

+0

Même avec une liste liée, vous avez besoin d'une colonne pour chaque ligne. Vous avez besoin de m x n collections, pas 2. –

1

Si vous avez juste une rangée de rangée et une rangée de colonnes, vous avez quelque chose comme ça

foo bar baz 
    sna 
    fu 

mais ce que vous voulez vraiment quelque chose comme celui-ci

foo bar baz 
    sna rah boo 
    fu man chu 

Vous souhaitez déclarer quelque chose comme:

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

Si vous avez en fait un tableau non rectangulaire, alors vous devrez vérifier rowArray [ligne] .length au lieu de colArray.length.

Ensuite, vous définirez result = rowArray [row] [col]; Mais comme vous n'avez pas réellement divulgué la déclaration rowArray et la déclaration colArray, nous ne faisons que deviner.

+0

public MatrixEntry [] rowArray; {rowArray = null; } public MatrixEntry [] colArray; {colArray = null; Je souhaite créer des listes chaînées pour implémenter une matrice 2-D. Est-ce possible en utilisant deux tableaux à une dimension? ou dois-je utiliser une matrice 2-D? –

0

D'abord, les tableaux sont indexés de 0 pas 1. idiome typique est quelque chose comme "si (ligne> = 0 & & ligne < rowArray.length) {...}".

De plus, pour de telles expressions simples, vous n'avez pas besoin de tant de parenthèses; cela complique trop l'expression. Rester simple. Si vous voulez vraiment vous pourriez regrouper chaque comparaison individuelle, mais je ne le ferais probablement pas.

Enfin, votre code ressemblerait à ceci:

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

Vous ne savez pas ce que 'colArray' fait dans ce code. –

0

lire vos commentaires, je ne suis pas sûr de ce que vous voulez exactement.
Voulez-vous quelque chose comme:
List1: Itema, elementB, ItemC ...
List2: ItemD ...
List3: ItemE, ItemF ..

si oui, je suggère d'utiliser un Tableau (1-dimension) de LinkedLists. Ainsi, l'index du tableau représente la ligne et la liste représente les colonnes de cette ligne.