Um ein Array von Arrays haben Sie eine ArrayList
wie so verwenden könnte:
List<String[]> arrayList = new ArrayList<>();
while ((myLine = bufRead.readLine()) != null) {
String[] vals = myLine.split(" ");
arrayList.add(vals);
}
Dieses geht durch jede Zeile, es in ein Array machen und speichern sie dann in der ArrayList
.
Nach können Sie durch Ihre Arraylist wie folgt durchlaufen:
for (String[] currLine : arrayList) {
for (String currString : currLine) {
System.out.print(currString + " ");
}
System.out.println();
}
Dieser Druck wird:
Lauf:
abc def zed fgf
qwe zxc ghj cvb
BUILD ERFOLGREICH (Gesamtzeit: 0 Sekunden)
BEARBEITEN Eine Methode erstellt, die den Index des gesuchten Werts findet. Allerdings Ich schlage vor, dass die Suche nach etwas wie "zxc"
Ergebnis 1,1 und nicht 2,2, weil Arrays bei 0 indiziert sind.
public static int[] getIndex(List<String[]> arrayList, String tofind) {
int[] index = new int[]{-1, -1};
for (int i = 0; i < arrayList.size(); i++) {
String[] currLine = arrayList.get(i);
for (int j = 0; j < currLine.length; j++) {
if (currLine[j].equals(tofind)) {
index = new int[]{i + 1, j + 1};
return index;
}
}
}
return index;
}
Während nicht die effizienteste Art und Weise (es durch jedes Array iteriert und jeder String
dieses Array) es das Ergebnis tut erhalten, die Sie suchen:
es wie so aufrufen:
int[] zxcIndex = getIndex(arrayList, "zxc");
System.out.println(zxcIndex[0] + ", " + zxcIndex[1]);
Wird drucken:
2, 2
Ich schrieb dieses Druckverfahren, während die Arbeit an diesem, können Sie es zu Ihrer Bequemlichkeit für die Fehlersuche verwenden können:
public static void printList(List<String[]> arrayList) {
for (String[] currLine : arrayList) {
for (String currString : currLine) {
System.out.print(currString + " ");
}
System.out.println();
}
}
Auch dachte, Sie zu einem bestimmten Index aktualisieren möchten, ist dies viel einfacher:
public static void updateIndex(List<String[]> arrayList, int[] toUpdate, String value) {
String[] rowToUpdate = arrayList.get(toUpdate[0] - 1);
rowToUpdate[toUpdate[1] - 1] = value;
}
Also das alles zusammen setzen, läuft der folgende:
System.out.println("Current list:");
printList(arrayList);
int[] zxcIndex = getIndex(arrayList, "zxc");
System.out.println("\nIndex of xzc is: " + zxcIndex[0] + ", " + zxcIndex[1] + "\n");
updateIndex(arrayList, zxcIndex, "lmnop");
System.out.println("Modified list at index " + zxcIndex[0] + "," + zxcIndex[1] + " :");
printList(arrayList);
Ergebnisse in:
Lauf:
Aktuelle Liste:
abc def zed fgf
qwe zxc ghj cvb
Index von xzc ist: 2, 2
Modified Liste mit dem Index 2 , 2:
abc def zed fgf
qwe LMNOP ghj CVB
BUILD erfolgreich (Gesamtzeit: 0 Sekunden)
Was ist das Problem mit dem Code, den Sie haben? – markspace
Textdatei ist mehr als zwei Zeilen .. –
Meinst du für die gesamte Zeile innerhalb des ersten Index von Array gespeichert werden? Oder meinst du etwas wie String [] Array1, wobei Element 0 = abc und Element 1 = def und Element 2 = zed usw.? – robotlos