2 votes

Java - Ajouter des valeurs à un tableau bidimensionnel et comment voir le tableau ?

J'ai un tableau (Arr). Je remplis les points1 et 2 avec des valeurs.

public class Arr {
    float pointX;
    float pointY;
    boolean yesNo;
    String text; 
}

public Arr points1[];
public Arr points2[];   

points1 = new Arr[100];
for (int i = 0; i < 100; i++) points1[i]= new Arr();    

for (int j = 0; j < 100; j++) {
    points1[j].pointX = getFloat;
    points1[j].pointY = getFloat;
    points1[j].yesNo = getBoolean;
    points1[j].text = getText;
}   

points2 = new Arr[100];
for (int x = 0; x < 100; x++) points2[x]= new Arr();    

for (int y = 0; y < 100; y++) {
    points2[y].pointX = getFloat;
    points2[y].pointY = getFloat;
    points2[y].yesNo = getBoolean;
    points2[y].text = getText;
}

Cela fonctionne, mais qu'en est-il, lorsque j'en ai cinq ou plus (points1, points2, points3...) Comment puis-je faire "public Arr points[][]" ? Et ensuite remplir et obtenir les valeurs avec par exemple points[0][22].pointX ou points[1][10].text ?

Et comment puis-je voir le tableau de points[][] comme var_dump en PHP ? Comment lister le tableau ? Exemple de var_dump :

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}

1voto

Bojan Kogoj Points 3002

Voici un exemple de travail

package com.stackoverflow.q15134193;

public class Test1 {
    public static Arr[][] points;
    static float getFloat = 1;
    static boolean getBoolean = true;
    static String getText = "hi";

    public static void main(String[] args) {

        points = new Arr[100][];
        for (int i = 0; i < points.length; i++) {
            points[i] = new Arr[100];
            for (int j = 0; j < points[i].length; j++)
                points[i][j] = new Arr();
        }

        for (int i = 0; i < points.length; i++) {
            for (int j = 0; j < points[i].length; j++) {
                points[i][j].pointX = getFloat;
                points[i][j].pointY = getFloat;
                points[i][j].yesNo = getBoolean;
                points[i][j].text = getText;
            }
        }

        for (int i = 0; i < points.length; i++)
            for (int j = 0; j < points[i].length; j++)
                System.out.println("X: " + points[i][j].pointX + " Y: " 
                        + points[i][j].pointY + " YesNo: " 
                        + points[i][j].yesNo 
                        + " text: "+ points[i][j].text);
    }
}

class Arr {
    public float pointX;
    public float pointY;
    public boolean yesNo;
    public String text;
}

0voto

Stefan de Bruijn Points 3863

Je ne comprends pas très bien ce que vous essayez de faire, mais Java n'est pas PHP. Java dispose d'un ensemble étendu de Collections qui vous donnera une meilleure couverture que de simples tableaux.

Comme je ne suis pas tout à fait sûr de ce que vous essayez de faire, je ne peux pas vraiment vous dire quelles collections pourraient faire l'affaire, mais vous pouvez vous renseigner sur des choses comme Maps et ArrayList.

Vous pourriez créer, par exemple, une liste de tableaux de "Arr" comme suit

ArrayList<Arr> list = new ArrayList<Arr>(); 

De même, vous pouvez faire ArrayList<Arr, Arr> ou commencez à travailler avec Maps si vous voulez stocker votre objet Arr avec une clé pour le retrouver.

Une fois que vous utilisez une collection Java, la façon la plus claire d'imprimer ces données est de boucler sur celle-ci, avec quelque chose comme

for(Arr a : list){
  Log.d("my_tag", "My list contains"+a.toString());
}

0voto

Azodious Points 8187

Au lieu d'un tableau 2D, vous pouvez utiliser ArrayList .

ArrayList<Arr> points = new ArrayList<Arr>();

Maintenant, accédez à un index comme suit :

points.get(22).pointX OR points.get(10).text

Essayez d'imprimer la liste de tableaux points pour voir un aperçu de la sortie de la chaîne :

System.out.println(points);

0voto

Premsuraj Points 950

Vous devez implémenter une méthode toString() dans votre classe Arr, et ensuite appeler

Log.i("mytag", Arrays.toString(points1));

comme expliqué ici comment voir un tableau dans logcat pour Android

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X