PDA

Visualizza la versione completa : [Java] Riempire Array bidimensionale


ilc0rv0
20-06-2005, 09:31
ciao a tutti...questo codice Ŕ errato o giusto?



for(int i=0;i<temporaneo.size();i++)
for(int j=0;j<=1;j++) {
Integer obj = new Integer(i);
data[i][j] = obj;
}


dovrebbe riempire un array bidimensionale tipo questo:

00
11
22
33
44
55
66
ecc ecc

PS temporaneo.size() = 39

ilc0rv0
20-06-2005, 09:41
codice modificato in questo modo, ma nn funziona lo stesso :(



while(i<temporaneo.size()) {
while(j<2) {
Integer obj = new Integer(i);
data[i][j] = obj;
j++;
}
i++;
}



con i e j dichiarati uguali a 0

LeleFT
20-06-2005, 10:25
Per forza: se si usano dei while, al posto dei pi¨ comodi for, bisogna stare attenti alle reinizializzazioni!


PossibilitÓ 1

for(int i=0;i<temporaneo.size();i++)
for(int j=0;j<=1;j++)
data[i][j] = new Integer(i);

PossibilitÓ 2:

while(i<temporaneo.size()) {
while(j<2) {
data[i][j] = new Integer(i);
j++;
}
i++;
j = 0;
}

Rispondo all'autore del post: il tuo codice era giusto.


Ciao. :ciauz:

ilc0rv0
20-06-2005, 10:40
e allora come mai mi da errore questo? :(



import javax.swing.table.AbstractTableModel;
import java.util.*;

public class MyTableModel extends AbstractTableModel
{
private String[] columnNames = {"TESTATA", "PREZZO NETTO", "COPIE RESE"};
private Object[][] data;
private Vector temporaneo;

public MyTableModel() {
temporaneo = ApriConnessione.getRisultatoQuery();
System.out.println(temporaneo.size());
for(int i=0;i<temporaneo.size();i++)
for(int j=0;j<1;j++) {
data[i][j] = new Integer(i);
}
}


questo Ŕ l'errore:


java.lang.NullPointerException
at MyTableModel.<init>(MyTableModel.java:16)
at sviluppoQuotidiani.<init>(sviluppoQuotidiani.java:34)
at menuListener.actionPerformed(menuListener.java:25)


dove le rispettive righe sono:
data[i][j] = new Integer(i); ---- mytablemodel
tabella = new JTable(new MyTableModel()); ---- sviluppoQuotidiani
sviluppoQuotidiani sq = new sviluppoQuotidiani(); ---- menulistener

praticamente, l'errore parte da menulisener che crea l'oggetto della classe sviluppoquotidiani che a sua volta ha crea la JTable tabella usando la classe mytablemodel in cui riempio l'array bidimensionale data[][] con 2 cicli for annidati.

floyd
20-06-2005, 10:43
hai dimenticato di inizializzare data
data = new Object[10][20];

ilc0rv0
20-06-2005, 10:48
ilc0rv0@linux:~/Desktop/javaedic/ver.3> javac *.java
MyTableModel.java:7: incompatible types
found : java.lang.Object[]
required: java.lang.Object[][]
private Object[][] data = ApriConnessione.getRisultatoQuery().toArray();
^
1 error
ilc0rv0@linux:~/Desktop/javaedic/ver.3>


ho provato a trasformare il Vector righe in un array di object ma ovviamente a me serve un array bidimensionale e toArray restituisce un array unidimensionale!

come possofare per trasformare un Vector composto in questo modo:
[testata, prezzo]
[testata, prezzo]
[testata, prezzo]
[testata, prezzo]
[testata, prezzo]

in un Object[][]?

ilc0rv0
20-06-2005, 10:55
ho provato a inizializzare data ed ora all'inizio funziona, ma si blocca subito il programma e in console ottengo un errore di nullPointerException al metodo della classe MyTableModel :(

public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}

LeleFT
20-06-2005, 11:01
Originariamente inviato da ilc0rv0
ho provato a trasformare il Vector righe in un array di object ma ovviamente a me serve un array bidimensionale e toArray restituisce un array unidimensionale!

come possofare per trasformare un Vector composto in questo modo:
[testata, prezzo]
[testata, prezzo]
[testata, prezzo]
[testata, prezzo]
[testata, prezzo]

in un Object[][]?
In questo modo:


Object[] tmp = null
Object[][] result = new Object[vettore.size()][2]
for (int i=0; i<vettore.size(); i++) {
tmp = vettore.elementAt(i);
result[i][0] = tmp[0];
result[i][1] = tmp[1];
}

Ciao. :ciauz:

ilc0rv0
20-06-2005, 11:02
ho risolto commentando il metodo in cui ottenevo l'errore!
mah! :confused: :master:
cmq ora ottengo dei valori da 0 a 38 solamente nella prima colonna, mentre nella seconda ho tutti i campi vuoti!

-----------------------------------------------------

PROBLEMA RISOLTO
il secondo for andava da i=0 a i<1 quindi era ripetuto solo una volta, ora funziona :D

-----------------------------------------------------

ora sono riuscito a riempire un arraybidimensionale...ora il problema Ŕ un altro, ma apro un altro topic :)

Loading