Also habe ich dieses Programm geschrieben, das eine Textdatei empfängt, die Daten in dieser Datei nimmt und in ein 2D-Char-Array legt, um auf verschiedene Arten auf den Bildschirm zu drucken. Eine der Dateien, die ich habe, funktioniert perfekt, jedoch gibt es ein Problem beim Versuch, die zweite Datei "diagonal" auszudrucken. Als erstes ist hier die erste und einfachere Datei, die ganz gut funktioniert:Array-Index Out of Bounds erhalten Ausnahme für eine Textdatei, aber nicht für eine andere ähnliche Datei in Java?
5 4
FILE
WITH
SOME
MORE
INFO
In beiden Dateien zeigen die ersten beiden Zahlen die Anzahl der Zeilen und Spalten, die für den 2D-char-Array erstellt werden, respectively. Als nächstes ist hier ein Teil des Codes mit dieser Datei „testfile.txt“ und die Ergebnisse des Code:
public static void main(String[] args) throws IOException
{
char[][] charArray = readFile();
printArray(charArray);
printVerticalArray(charArray);
printHorizontalArray(charArray);
printDiagonalArray(charArray);
}
public static char[][] readFile() throws IOException
{
File myFile = new File("monalisa.txt");
Scanner inputFile = new Scanner(myFile);
int rows, columns;
rows = inputFile.nextInt();
columns = inputFile.nextInt();
String[] strArray = inputFile.nextLine().split(" ");
char[][] array = new char[rows][columns];
for(int i = 0; i < rows; i++)
{
array[i] = inputFile.nextLine().toCharArray();
}
return array;
}
.
.
.
public static void printDiagonalArray(char[][] cArray)
{
for(int i = 0; i < 1; i++)
{
for(int c = cArray[i].length - 1; c >= 0; c--)
{
for(int r = cArray[c].length; r >= 0; r--)
{
System.out.print(cArray[r][c]);
}
System.out.println();
}
System.out.println();
}
}
Ergebnisse:
Original Text:
FILE
WITH
SOME
MORE
INFO
Transformations:
INFO
MORE
SOME
WITH
FILE
ELIF
HTIW
EMOS
EROM
OFNI
OEEHE
FRMTL
NOOII
IMSWF
das so ist genau wie das Programm soll Wenn ich jedoch versuche, die zweite Datei "monalisa.txt" in das Programm zu schreiben, bekomme ich die Ausnahme außerhalb des Bereichs, und ich kann nicht herausfinden, warum. Hier ist die ursprüngliche zweite Textdatei (es ist ein Google Drive Link, weil es zu groß wäre hier angezeigt): https://drive.google.com/open?id=0BwujWiqVRKKsajlKV1NIWG1uQVU
Und hier ist das Ergebnis der Programme mit dieser Textdatei: https://drive.google.com/open?id=0BwujWiqVRKKsUnZYQTU4YmZDWUE
Linie 78 in dem code ist:
for(int r = cArray[c].length; r >= 0; r--)
Also würde jemand zufällig wissen, warum das passiert? Und danke an alle, die das alles durchgelesen haben!
Es sieht aus wie Sie Ihre Array-Indizes falsch herum haben: 'System.out.print (cArray [r] [c]);' sollte 'System.out.print (cArray [c] [r]); '. –
@AndyTurner Ich habe das versucht, aber die genau gleiche Ausnahme tritt auf:/ – thelonewanderer
Auch 'r = cArray [c] .length - 1'. –