zweidimensionales Feld
Hagi
- java
Hallo,
ich habe ein zweidimensionales Feld aus int-Werten mit 240 Zeilen und 320 Spalten:
{ {1,...,320},
{321,...,640},
...
{76481,...,76800} }
Diese Matrize habe ich in einer txt-Datei abgespeichert, denn die direkte Aufnahme in die java-Datie erzeugt eine Fehlermeldung:"Code of a method longer than 65535 bytes"
Daher wollte ich die Zeilen der txt-Datei in ein int[][]-Feld in der java-Datei ablegen:
private static final String IN="matrix.txt";
public static void main(String[] argv) throws IOException {
String Zeile;
int[][] Feld;
int counter=0;
LineNumberReader in=new LineNumberReader(new FileReader(IN));
while ((Zeile=in.readLine())!=null)
Feld[counter++][]=Zeile;
in.close();
}
Das funktiniert natürlich nicht, da Zeile ein String ist. Auch ein cast mit (int[]) Zeile geht nicht.
Wie bekomme ich die txt-Datei in ein zweidimensionales Feld?
Herzlichen Dank und viele Grüße,
Hagi
Hi Hagi
Probiers doch mal so
int matrix[][]= new Matrix[240][320];
int zaehler=0;
for (int i=0;i<240;i++)
{
for (int j=0;j<320,j++)
{
matrix[i][j]=zaehler+1;
zaehler++;
}
}
dann brauchst du den ganzen Auslagerungsquatsch nicht. Ist nicht getestet, aber meine grauen Zellen sagen, daß das gehen müßte.
Es sei denn es war ein Gedankenfurz meinerseits
also probiers einfach mal aus
Ciao Goofy
Hallo Goofy,
die angegebene Matrix ist nur ein Muster, tatsächlich stehen beliebige int-Zahlen in der Matrix. D.h. ich muss doch die txt-Datei irgendwie einlesen.
Danke,
Hagi
Hi Hagi
Probiers doch mal so
int matrix[][]= new Matrix[240][320];
int zaehler=0;
for (int i=0;i<240;i++)
{
for (int j=0;j<320,j++)
{
matrix[i][j]=zaehler+1;
zaehler++;
}
}
dann brauchst du den ganzen Auslagerungsquatsch nicht. Ist nicht getestet, aber meine grauen Zellen sagen, daß das gehen müßte.
Es sei denn es war ein Gedankenfurz meinerseits
also probiers einfach mal aus
Ciao Goofy
Hoi,
zuerst mal: http://learn.to/quote
die angegebene Matrix ist nur ein Muster, tatsächlich stehen
beliebige int-Zahlen in der Matrix. D.h. ich muss doch die
txt-Datei irgendwie einlesen.
Dann speichere sie in einem freundlicheren Format ab, z. B. so:
0,1,2,3,4,5,6,7,8
9,10,11,12,13,14,15
16,17,18,19,20,21,22
Dann kannst du sie etwa so einlesen:
public static void main(String[] args) {
String Zeile;
int[][] Feld;
int i,j,k,n;
LineNumberReader in = new LineNumberReader(new FileReader(IN));
for(i=0,n=0,k=0;zeile != null;Zeile = in.readLine(),i++,n=++,k=0) {
for(j=zeile.indexOf(",");j!=-1;j=zeile.indexOf(",",k)) {
Feld[i][n] = Integer.parseInt(zeile.substring(j,k));
k = j + 2;
}
}
in.close();
}
Das ist zwar nicht getestet, du musst also evntl. noch ein wenig beim
substring rumspielen, aber generell sollte das so funktionieren.
Gruesse,
CK