Char-Array - NullPointerException

Hallo Liebe Forenmitgleder,

für eine Aufgabe soll ich aus einer Datei Text lesen, diesen verschlüsseln und dann wieder auf einer Datei ausgeben. Dabei soll der Text einfach-verschlüsselt werden(Caesar-Verschlüsselung). Hierzu brauch ich jeden enzelnen Buchstaben aus dem Text.

ich bin noch im ersten Schritt:
Text aus datei lesen = klappt
Text mit split zerkleinern = klappt
Wörter zu einem Sinnvollen Char-array umwandalne = nicht !

Java:
public class cesar2 {

	public static void main(String[] args) {
		
		String [] lineArray = new String [99];
		String [] wortArray = new String [99];
		char [] letterArray = new char [99];
		
		lineArray = getLine(lineArray);
		wortArray = getWortArray(lineArray);
		letterArray = getLetterArray(wortArray);
		}	 
		
	public static String[] getLine(String array []) {
		
		array =	EasyFileAccess.getFileContent("C:/Users/lebert/Desktop/test.txt");
		return array;
	}
	public static String[] getWortArray(String [] line) {
		boolean isLine = true;
		String [] puffer = new String [line.length];
		String [] wortArray = new String [line.length];
		
		for (int i = 0; isLine ; i++) {
			puffer = line[i].split(" ");
		//	System.out.println(puffer[0]);
			for (int j = 0; j < puffer.length; j++) {
				wortArray[j] = puffer[j];
		//		System.out.println(puffer.length);
		//		System.out.println(wortArray[j]);
				isLine = false;
			}
		}
		return wortArray;
	}
	public static char [] getLetterArray(String wortArray []) {
		char [] letterArray = new char [wortArray.length];
		String wort = "puffer";
		
		for (int i = 0; i < wortArray.length; i++) {
			wort = wortArray[i];
			System.out.println(wort + " wort " + wort.length()  + " = wort.length");
			for (int j = 0; j <= wort.length() - 1; j++) {
	
				letterArray = wort.toCharArray();
				
			}
		}
		return letterArray;
	}
}

Ich bekomme eine NullPointerException, aber ich verstehe das nicht:
2.5. wort4 = wort.length
Bedeutung wort9 = wort.length
der wort3 = wort.length
OCR-Kennzeichen wort15 = wort.length
in wort2 = wort.length
der wort3 = wort.length
Datenbank wort9 = wort.length
Exception in thread "main" java.lang.NullPointerException
at cesar2.getLetterArray(cesar2.java:44)
at cesar2.main(cesar2.java:12)
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Du solltest es nochmal überdenken, du übergibst der methode ein String array, dieses überschreibst du in der for schleife solange bis i == wortArray.length ist, erstens bringt das nix und 2tens kann es dann passieren das du auf einen index zugreifen willst der in dem array nicht existiert, du müsstest also ein char[][] zurückgeben welches weitere char arrays für jedes einzelne wort in dem String array enthält, logischerweise, außer du möchtstest alle buchstanben aller wörter in einem char array haben.
 
Zuletzt bearbeitet:

ceving

Aktives Mitglied
für eine Aufgabe soll ich aus einer Datei Text lesen, diesen verschlüsseln und dann wieder auf einer Datei ausgeben. Dabei soll der Text einfach-verschlüsselt werden(Caesar-Verschlüsselung). Hierzu brauch ich jeden enzelnen Buchstaben aus dem Text.

Mal ne Frage: wozu braucht man für Caesar (ich denke Rot13) ein Array? Das geht in einem Stream, da jedes Zeichen unabhängig von allen anderen Zeichen verschlüsselt wird. Du brauchst die Eingangsdatei also nur zeichenweise einlesen und die Ausgangsdatei zeichenweise schreiben.

Und noch ein Tipp:
Code:
[99]
geht gar nicht! Wenn man nicht vorhersehen kann, wie groß das Datenvolumen wird, muss man entweder eine Liste oder einen Iterator nehmen. Darauf zu vertrauen, dass 99 schon reichen wird, endet zwangsläufig in einer RuntimeException. Diese Art von Programmier-Stil ist verantwortlich für unzählige Sicherheitslöcher in Software auf der ganzen Welt. Es ist somit eine der übelsten Todsünden, die man als Programmierer begehen kann.

Und wenn es unbedingt ein Array sein muss: mit Java 7 kann man sehr einfach eine ganze Datei in einen Byte-Array oder String einlesen:
Java:
new String(Files.readAllBytes(Paths.get(filePath)));
java - What is simplest way to read a file into String? - Stack Overflow
Wenn du das Byte-Array gar nicht erst zu einem String zusammen fügst, sparst du dir, es wieder zerlegen zu müssen.
 
Zuletzt bearbeitet:

ceving

Aktives Mitglied
Ich habe dein Beispiel mal um eine Implementation der Klasse EasyFileAccess angereichert, damit auch andere es testen können:
Java:
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.io.IOException;

public class cesar2
{
  static class EasyFileAccess
  {
    static String[] getFileContent(String filename)
    {
      try {
        List<String> lines = Files.readAllLines (Paths.get(filename),
                                                 StandardCharsets.US_ASCII);
        String[] array = new String[lines.size()];
        int i = 0;
        for (String line : lines)
          array[i++] = line;
        return array;
      }
      catch (IOException ex) {
        throw new RuntimeException(ex);
      }
    }
  }

  public static void main(String[] args)
  {
    String [] lineArray = new String [99];
    String [] wortArray = new String [99];
    char [] letterArray = new char [99];
           
    lineArray = getLine(lineArray);
    wortArray = getWortArray(lineArray);
    letterArray = getLetterArray(wortArray);
  }    
           
  public static String[] getLine(String array [])
  {
    array = EasyFileAccess.getFileContent("test.txt");
    return array;
  }

  public static String[] getWortArray(String [] line)
  {
    boolean isLine = true;
    String [] puffer = new String [line.length];
    String [] wortArray = new String [line.length];
           
    for (int i = 0; isLine ; i++) {
      puffer = line[i].split(" ");
      //  System.out.println(puffer[0]);
      for (int j = 0; j < puffer.length; j++) {
        wortArray[j] = puffer[j];
        //      System.out.println(puffer.length);
        //      System.out.println(wortArray[j]);
        isLine = false;
      }
    }
    return wortArray;
  }

  public static char [] getLetterArray(String wortArray [])
  {
    char [] letterArray = new char [wortArray.length];
    String wort = "puffer";
           
    for (int i = 0; i < wortArray.length; i++) {
      wort = wortArray[i];
      System.out.println(wort + " wort " + wort.length()  + " = wort.length");
      for (int j = 0; j <= wort.length() - 1; j++) {
       
        letterArray = wort.toCharArray();
                   
      }
    }
    return letterArray;
  }
}

Wenn ich das Programm mit der folgenden Testdatei laufen lasse

Code:
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem
ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur
sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et
dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam
et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea
takimata sanctus est Lorem ipsum dolor sit amet.

knallt es schon in
Code:
getWortArray
:

Code:
javac -Xlint:unchecked cesar2.java && java cesar2
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
	at cesar2.getWortArray(cesar2.java:55)
	at cesar2.main(cesar2.java:35)

Der Grund für diesen Fehler ist relativ einfach gefunden: du baust einen Puffer auf der Basis von
Code:
line.length
und gehst dann jede Zeile durch und füllst den Puffer mit dem Ergebnis von
Code:
split
für die betreffende Zeile. Das Problem ist aber, dass
Code:
line.length
nicht die Länge der betreffenden Zeile ist, sondern die Anzahl der Zeilen, denn
Code:
line
hätte besser
Code:
lines
heißen sollen, weil du an
Code:
getWortArray
das Ergebnis von
Code:
getLine
übergibst.
Code:
getLine
hätte aber auch besser
Code:
getLines
geheißen, weil es ein Array aller Zeilen der Datei liefert und nicht nur eine Zeile.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
D 2D Char Array into String Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
R String in char-Array übertragen Java Basics - Anfänger-Themen 5
Z Char Array an zufälligen stellen mit einem "x" füllen. Java Basics - Anfänger-Themen 4
A char array wird überschrieben Java Basics - Anfänger-Themen 6
E 2D Array - char durch die Matrix "wandern" lassen Java Basics - Anfänger-Themen 7
I Methoden char Array Aufgabe (bitte hierbei um Hilfe) Java Basics - Anfänger-Themen 3
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
I char Array to String Java Basics - Anfänger-Themen 3
C (char) Array einlesen Java Basics - Anfänger-Themen 8
H char-Array Java Basics - Anfänger-Themen 22
C Methoden String in char Array Java Basics - Anfänger-Themen 3
E Wie wird in Java ein Char-Array terminiert ? Java Basics - Anfänger-Themen 15
W Char Array bearbeiten Java Basics - Anfänger-Themen 6
A Char-Array erstellen Java Basics - Anfänger-Themen 35
Z char Array unbekanntes Zeichen selbstständig anlegen Java Basics - Anfänger-Themen 6
M Bestimmen, wie oft ein Char in einem Array vorkommt Java Basics - Anfänger-Themen 2
C char array-positionstausch Java Basics - Anfänger-Themen 6
R Anzahl von Zeichen in einem Char Array Java Basics - Anfänger-Themen 4
L zweidimensionales char array reihenfolge ändern ? Java Basics - Anfänger-Themen 2
D Best Practice String aufbau - Char Array oder Anhängen Java Basics - Anfänger-Themen 11
S For Schleife Char Array Java Basics - Anfänger-Themen 1
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
B char Array mit ints Java Basics - Anfänger-Themen 7
J char-Array rückwärts ausgeben und in neues Char-Array speichern Java Basics - Anfänger-Themen 3
S Array - index von Benutzer eingegebenen char ausgeben Java Basics - Anfänger-Themen 3
M char Array füllen Java Basics - Anfänger-Themen 2
H ArrayList mit char- Array befüllen Java Basics - Anfänger-Themen 12
P Datentypen String auf JTextField wird zu Char-Array und anschließend zu int Java Basics - Anfänger-Themen 12
D Char Array ab bestimmter Stelle in neuem Speichern Java Basics - Anfänger-Themen 13
D Eine Stelle eines Char- Arrays nach dem vorkommen in einem ganzem anderem Array überprüfen Java Basics - Anfänger-Themen 20
C Leerzeichen im char Array setzen Java Basics - Anfänger-Themen 33
J Alle Vorkommen eines chars in einem Array durch einen anderen char ersetzen Java Basics - Anfänger-Themen 10
N Methode die String in char-Array wandelt!! Java Basics - Anfänger-Themen 11
D Erste Schritte String Array in char Array umwandeln? Java Basics - Anfänger-Themen 1
E Char-Array zu String Java Basics - Anfänger-Themen 2
M Datentypen Char Array in String Array gibt Probleme Java Basics - Anfänger-Themen 10
M Char-Array Problem Java Basics - Anfänger-Themen 6
F Char Array splitten Java Basics - Anfänger-Themen 5
S Mehrdimensionales Char-Array initialisieren Java Basics - Anfänger-Themen 17
S char Array in Character KlassenArray? Java Basics - Anfänger-Themen 24
Semox Datentypen Einlesen von char in Array schlägt unerwartet fehl Java Basics - Anfänger-Themen 4
H Datentypen char array in int umwandeln Java Basics - Anfänger-Themen 9
B Unterschied zwischen String & char Array? Java Basics - Anfänger-Themen 5
B Datentypen Char Array in einen String verwandeln? Java Basics - Anfänger-Themen 2
J char array eintraege geben Java Basics - Anfänger-Themen 2
T Char Array in fremder Klasse Java Basics - Anfänger-Themen 20
S Char Array Werte in short variablen speichern Java Basics - Anfänger-Themen 4
P Array index per char suche auslesen Java Basics - Anfänger-Themen 3
M 2D char Array anzeigen Java Basics - Anfänger-Themen 4
G Zeichenkette in char-Array konvertieren Java Basics - Anfänger-Themen 13
M wie auf ein feld mit leerzeichen in einem char array prüfen? Java Basics - Anfänger-Themen 4
J String in char Array Java Basics - Anfänger-Themen 2
J Verständnisfrage zu Char-Array Java Basics - Anfänger-Themen 5
N String/char-array aus datei auslesen Java Basics - Anfänger-Themen 2
M char Array in int Array Java Basics - Anfänger-Themen 3
J Array - Vertauschen Problem mit char/int Java Basics - Anfänger-Themen 6
Jen Array einlesen, Int und Char Java Basics - Anfänger-Themen 57
J Char-Array mit variabler Länge zurückliefern. Java Basics - Anfänger-Themen 11
B Deklaration eines char-array Java Basics - Anfänger-Themen 2
F abc char array Java Basics - Anfänger-Themen 3
J char[] reverse Array Java Basics - Anfänger-Themen 9
G Zufällige Buchstaben in char-Array Java Basics - Anfänger-Themen 9
0 Häufigstes Zeichen in einem Char-Array ermitteln? Java Basics - Anfänger-Themen 6
M Char Array mit Sonderzeichen in String umwandeln Java Basics - Anfänger-Themen 21
T String als Array und Umwandlung in Char Java Basics - Anfänger-Themen 7
J StringBuffer-Objekt soll auf Char-Array zugreifen. Java Basics - Anfänger-Themen 4
F char to byte array Java Basics - Anfänger-Themen 8
G Char oder Byte Array mit unbekannter länge erstellen? Java Basics - Anfänger-Themen 1
S Testen ob ein Char Array noch nicht belegt ist! Java Basics - Anfänger-Themen 3
G Char Array konvertieren Java Basics - Anfänger-Themen 7
megachucky probleme mit einem char-array. Java Basics - Anfänger-Themen 6
H char Array in String Java Basics - Anfänger-Themen 7
E Ziffer in char-Array Java Basics - Anfänger-Themen 2
S String in char-Array einfügen Java Basics - Anfänger-Themen 8
G Array und Char Java Basics - Anfänger-Themen 3
Tommilee Char ausgeben Java Basics - Anfänger-Themen 5
M error: '.class' expected switch(char) Java Basics - Anfänger-Themen 32
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
P9cman Char Index rekursiv finden Java Basics - Anfänger-Themen 4
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
C String/Char-API Java Basics - Anfänger-Themen 13
U Char zu einem String machen Java Basics - Anfänger-Themen 1
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
W char über die Konsole? Java Basics - Anfänger-Themen 7
C char c Java Basics - Anfänger-Themen 13
D String und char in String speichern Java Basics - Anfänger-Themen 5
S zweidimensionale char arrays Java Basics - Anfänger-Themen 14
P Methoden Namen trennen mit .substring(), char.At(), .lenght() Java Basics - Anfänger-Themen 8
A Datentyp char Java Basics - Anfänger-Themen 27
A Char und modulo Java Basics - Anfänger-Themen 8
F Switch case wird als char nicht erkannt.... Java Basics - Anfänger-Themen 6
D Datentypen Char deklaration Java Basics - Anfänger-Themen 4
J Java char.at() Probelm Java Basics - Anfänger-Themen 12
S char auf buchstabe/zeichen prüfen Java Basics - Anfänger-Themen 1
M Die länge von char Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben