Text mit Programm einlesen und durchsuchen

Samuuus

Mitglied
Guten Tag,
Hab noch nicht viel mit Java gearbeitet und jetzt wollte ich ein Programm schreiben, dass eine Verbindung zu einem Text herstellt und diesen dann Zeile für Zeile einliest. Dabei kann man eine gewünschte Zeichenkette eingeben, von der dann die Zeile und die dazugehörige Position ausgegeben wird.
Die Ausgabe stimmt schon mal, nur versteh ich die Fehlermeldung nicht. Bitte um Hilfe in leicht vertsändlicher Sprache...Danke im Voraus!!!

Zeile 29 wird hierbei immer als Fehlerquelle angegeben:
Java:
 index = line.indexOf(zeichen_kette, index);


Java:
import java.io.*;             //BufferedReader importieren
public class Bsp06 {
 
	public static void main (String[] args) throws IOException {
                                          //fuer Fehlermeldungen
		String fileName, zeichen_kette;
		String line = "anfang";
		int index = 0, anz_zeile = 1;
		
		
		System.out.println("welche Textdatei?");
		fileName = SavitchIn.readLine();
		
		System.out.println("zu suchende Zeichenkette?");
		zeichen_kette = SavitchIn.readLine();
    
		//noetige Deklaration zur Verbindung mit Filenamen
		BufferedReader input = 
			new BufferedReader(new FileReader(fileName));
    
    	//liest eine Zeile aus Textdatei
		//Ergebnistyp: Zeile als String
		//oder null wenn am Fileende 
		
		
		while (line != null) {
				line = input.readLine();
				anz_zeile++;   						
				index = line.indexOf(zeichen_kette, index);
				if (index != -1){
					System.out.print("\n" +"Zeile " + anz_zeile + ":");
					System.out.print(" " + (index+1));
					while (index != -1) {
						index++;
						index = line.indexOf(zeichen_kette, index);
						if (index != -1)
						System.out.print("  " + (index+1));

					}
				}
			}	

		input.close();  //Dateiverbindung schliessen
		
	}
}

Ausgabe:
Java:
welche Textdatei?
Zeichentreppe.java
zu suchende Zeichenkette?
zeile

Zeile 21: 15  26  42
Zeile 22: 39Exception in thread "main" java.lang.NullPointerException
	at Bsp06.main(Bsp06.java:29)
 
Z

Zaega

Gast
Kann es sein, dass du bereits am Ende der Datei angekommen bist und daher bei "input.readLine();" (Zeile 27) null zurück gegeben wird?
Dann kann in Zeile 29 bei "index = line.indexOf(zeichen_kette, index);" auch nicht darauf zugegriffen werden und du bekommst eine "NullPointerException". Guck dir die Stelle am besten einfach mal im Debugger an ;)

mfh zaega
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Deshalb biete es sich auch an [c] while ((line = input.readLine()) != null)[/c] zu nutzen ;)
 

Samuuus

Mitglied
Danke, das hat mir schon mal geholfen...die Fehlermeldung ist jetzt weg. Leider stimmt die Ausgabe nicht mehr?

Habe jetzt
Java:
while ((line = input.readLine()) != null)
eingefügt und als Ausgabe kommt jetzt

Java:
welche Textdatei?
Zeichentreppe.java
zu suchende Zeichenkette?
zeile

Zeile 10: 15  26  42

Weiß jemand, warum sicha das jetzt geändert hat???
 
Z

Zaega

Gast
Wie sieht denn die Datei aus, die du einliest?
Ohne die Datei zukennen ist es schwer zu sagen, warum er jetzt aufhört, da nicht klar ist, was er z.B. noch finden müsste.

mfg zaega
 

Samuuus

Mitglied
Die einzulesende Datei sieht folgendermaßen aus...


Java:
/***************************************************
Treppe aus einem Zeichen - Demo fuer geschachtelte
for-Schleifen

VO Einfuehrung in die Programmierung / H.Hagenauer
***************************************************/

public class Zeichentreppe {

  public static void main (String[] args){
	
     int hoehe;     //Anzahl der Stufen
     char baustein; //"Baustein" der Treppe
     
     System.out.println("Zeichentreppe - Anzahl der Stufen eingeben");
     hoehe = SavitchIn.readLineInt();
     System.out.println("gewuenschtes Zeichen?");
     baustein = SavitchIn.readLineNonwhiteChar();
      
     for (int zeile = 1; zeile <= hoehe; zeile++){      //außen: Stufenanzahl
       for (int spalte = 1; spalte <= zeile; spalte++)  //innen: Zeichen pro Stufe
         System.out.print(baustein);
       System.out.println();
     }
	}
}

Des Weiteren soll das Wort "zeile" gesucht werden...

Als Ausgabe sollte dann das kommen:
Zeile 20: 15 26 42
Zeile 21: 39

Mein Programm sieht wie folgt aus:

Java:
import java.io.*;             //BufferedReader importieren
public class Bsp06 {
 
	public static void main (String[] args) throws IOException {
                                          //fuer Fehlermeldungen
		String fileName, zeichen_kette, line;
		int index; 
		int anz_zeile = 0;
		
		
		System.out.println("welche Textdatei?");
		fileName = SavitchIn.readLine();
		
		System.out.println("zu suchende Zeichenkette?");
		zeichen_kette = SavitchIn.readLine();
    
		//noetige Deklaration zur Verbindung mit Filenamen
		BufferedReader input = 
			new BufferedReader(new FileReader(fileName));
    
    	//liest eine Zeile aus Textdatei
		//Ergebnistyp: Zeile als String
		//oder null wenn am Fileende 
		
		
		while ((line = input.readLine()) != null) {
			index = 0;
			line = input.readLine(); 
			anz_zeile++; 						
			index = line.indexOf(zeichen_kette, index);
			if (index != -1){
				System.out.print("\n" +"Zeile " + anz_zeile + ":");
				System.out.print(" " + (index+1));
				while (index != -1) {
					index++;
					index = line.indexOf(zeichen_kette, index);
					if (index != -1)
					System.out.print("  " + (index+1));

				}
			}
		}	

		input.close();  //Dateiverbindung schliessen
		
	}
}
 
Z

Zaega

Gast
Entfern mal Zeile 28 (line = input.readLine()), wenn du dir mal Zeile 26 anschaust, wirst du den gleichen Befehl sehen. Das heißt du durchläufst jetzt nur noch jede zweite Zeile, weil du bei jedem Schleifendurchlauf zwei Zeilen liest, die erste davon aber direkt überschreibst. Dadurch erhählst du bei der Ausgabe nur den halben Wert bei der Zeile und jede zweite Zeile wird nicht gefunden.

mfg zaega
 
H

hüteüberhüte

Gast
Schau mal, das zählt alle Wörter in diesem Thema:
Java:
    public static void main(String[] args) throws IOException {
        Pattern wordPattern = Pattern.compile("\\w+");
        Map<String, Integer> words = new HashMap<String, Integer>();
        BufferedReader in = null;
        try {
            in = new BufferedReader(new InputStreamReader(new URL("http://www.java-forum.org/java-basics-anfaenger-themen/144374-text-programm-einlesen-durchsuchen.html").openStream()));
            String line;
            while ((line = in.readLine()) != null) {
                Matcher m = wordPattern.matcher(line);
                while (m.find()) {
                    String word = m.group().trim().toLowerCase();
                    if (words.containsKey(word)) {
                        words.put(word, words.get(word) + 1);
                    } else {
                        words.put(word, 1);
                    }
                }
            }
        } finally {
            if (in != null) {
                in.close();
            }
        }

        Object[][] array = new Object[words.size()][2];
        int i = 0;
        for (Map.Entry<String, Integer> e : words.entrySet()) {
            array[i][0] = e.getKey();
            array[i][1] = e.getValue();
            i++;
        }
        Arrays.sort(array, new Comparator<Object[]>() {

            public int compare(Object[] o1, Object[] o2) {
                return -((Integer) o1[1]).compareTo((Integer) o2[1]);
            }
        });

        System.out.println(Arrays.deepToString(array));
    }
Java tritt z.B. 342 mal auf, www 265 mal, Forum 253 mal, einlesen 83 mal, bei 24 mal, die 16 mal usw.

Ich denke das könnte hier hilfreich sein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Java Programm zum Suchen und Ersetzen von Text Dateien Java Basics - Anfänger-Themen 10
P Text aus Programm lesen Java Basics - Anfänger-Themen 3
B Text von Knuddels Chatfenster in mein Programm bringen? Java Basics - Anfänger-Themen 5
A Programm: Text ohne "b" Java Basics - Anfänger-Themen 7
P jar programm zeigt den text eingelesen aus datei nicht an Java Basics - Anfänger-Themen 3
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
A Edit Text Negative Decimalzahlen Java Basics - Anfänger-Themen 18
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
R Text in der DB abspeichern, und danach bearbeiten Java Basics - Anfänger-Themen 5
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
JavaBeginner22 Button Text verändern Java Basics - Anfänger-Themen 1
GoenntHack Java Text von JLabel verändert sich nicht Java Basics - Anfänger-Themen 1
A Text zu Morsecode Java Basics - Anfänger-Themen 8
O Java Text Area Zeilenausgabe Java Basics - Anfänger-Themen 7
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
M Text in Datei schreiben Java Basics - Anfänger-Themen 9
T208 Text Datei individuell benennen. Java Basics - Anfänger-Themen 5
A Werten aus dem Text ausliesten Java Basics - Anfänger-Themen 6
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
O Text mit Regex trennen und wieder zusammenbauen Java Basics - Anfänger-Themen 5
xFlozen Text mehrspaltig ausgeben Java Basics - Anfänger-Themen 3
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
K Rekursiver Vergleich von Textmuster und Text Java Basics - Anfänger-Themen 2
C Variablen Provided text for message may not be null Java Basics - Anfänger-Themen 9
H Klassen Die Länge einer Text-Node bestimmen Java Basics - Anfänger-Themen 2
F Erste Schritte java.util.Scanner: Beliebig langen Text per Paste in Console eingeben ? Java Basics - Anfänger-Themen 14
GermanPie Discord Text Channel erstellen? Java Basics - Anfänger-Themen 1
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
J Java TextArea Text bei hinzufügen makieren Java Basics - Anfänger-Themen 1
T Text-Ausgabe für Textadventure - Organisation Java Basics - Anfänger-Themen 5
G Anklickbaren Text erzeugen Java Basics - Anfänger-Themen 2
B Text-Datei nur in Stream speichern und dann ausgeben Java Basics - Anfänger-Themen 3
M Java: BufferedReader liest nur die Hälfte der Text-Datei. Java Basics - Anfänger-Themen 4
M Apache POI PPT - Vertikales Alignment von Text im XSLFAutoShape Java Basics - Anfänger-Themen 2
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
P Taschenrechner Text übertragung Java Basics - Anfänger-Themen 3
J java.text.DecimalFormat Java Basics - Anfänger-Themen 5
AnnaBauer21 GridBagLayout JLabel weightx: Unterschiedliche Breite mit & ohne Text Java Basics - Anfänger-Themen 6
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
S Text-To-Speech mit Java Java Basics - Anfänger-Themen 2
L Text-Adventure Java Basics - Anfänger-Themen 3
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
ruutaiokwu Ausgegebene Zeile ersetzen mit neuem Text Java Basics - Anfänger-Themen 3
tsom Erste Schritte itext Text als Block auf neue Seite Java Basics - Anfänger-Themen 0
Dimax Programme ,als Text in MySql speichern Java Basics - Anfänger-Themen 7
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
Harlequin Compiler-Fehler Text Adventure - "Long Output" Fehler Java Basics - Anfänger-Themen 3
S Zeichen zählen kopierter Text Java Basics - Anfänger-Themen 6
D Text als Code in java-forum.com formatieren. Wie ? Java Basics - Anfänger-Themen 3
F Schreibprogramm nur markierten Text in kursiv oder fett schreiben Java Basics - Anfänger-Themen 3
A Rechnen mit Text und Zahl Java Basics - Anfänger-Themen 4
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
M Erste Schritte Verschlüsselung von text Java Basics - Anfänger-Themen 21
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
S Java Text splitten mit Tabs, Zeilen, Zeichen und Klammern. Java Basics - Anfänger-Themen 6
M Beliebigen Text in *** umwandeln Java Basics - Anfänger-Themen 15
K (JTable) Text einer Zelle auf der linken Seite kürzel Java Basics - Anfänger-Themen 2
H Suche in Text und Markierung Java Basics - Anfänger-Themen 14
H Suche in einem Text Java Basics - Anfänger-Themen 17
F Input/Output Text einlesen lassen Java Basics - Anfänger-Themen 14
L Text eingeben und im Textfeld auslesen lassen Java Basics - Anfänger-Themen 2
R Best Practice Palindrom in einem Text finden Java Basics - Anfänger-Themen 18
J Text Datei einlesen Java Basics - Anfänger-Themen 6
L Text und Ganzzahl in einer Dialogbox Java Basics - Anfänger-Themen 5
D Text Adventure Erstellen Java Basics - Anfänger-Themen 10
T Jlabel durch Text in 2 anderen Jlabels sichtbar machen Java Basics - Anfänger-Themen 4
J JTextArea visible ohne Text Java Basics - Anfänger-Themen 3
D Bild zu Text Java Basics - Anfänger-Themen 4
L Text/Befehle zu Programmen senden Java Basics - Anfänger-Themen 1
L Java Text datei nur bis zu einem Punkt auslesen? Java Basics - Anfänger-Themen 3
T Classpath Problem mit dem auslesen von Text-Dateien (Pfad) Java Basics - Anfänger-Themen 3
S Erste Schritte Sprachermittler - Datei öffnen, Text in TextArea, Bereinigen, Auswerten Java Basics - Anfänger-Themen 14
S Java Label hat komischen text Java Basics - Anfänger-Themen 4
F Text anhand bestimmter Trennzeichen in Textteile trennen (netbeans) Java Basics - Anfänger-Themen 7
S Ausgabe von Text Formatieren Java Basics - Anfänger-Themen 6
H Text in einen Button quetschen Java Basics - Anfänger-Themen 3
A Text mit "Scanner" eingeben und Umlaute ersetzen Java Basics - Anfänger-Themen 7
A Text teilen und Wörter zählen Java Basics - Anfänger-Themen 7
J Zahlen als Text übersetzen Java Basics - Anfänger-Themen 6
F Erste Schritte Label Text vor Methodenaufruf setzen Java Basics - Anfänger-Themen 17
R Text Pane Aktualisierung erst nach JOptionPane Java Basics - Anfänger-Themen 10
I BufferedReader Text-Datei einlesen??? Java Basics - Anfänger-Themen 1
S Wort in Text suchen und ersetzen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
M Input/Output Text auf Fenster zeichen Java Basics - Anfänger-Themen 2
W Klassen Fehler bei public void setLabelText(JLabel label, String text) Java Basics - Anfänger-Themen 11
Chava Testprojekt.Text.Image.Button Java Basics - Anfänger-Themen 4
Z JSlider - Text wird nich angezeigt Java Basics - Anfänger-Themen 0
A Problem mit set.Text und übergabe Java Basics - Anfänger-Themen 2
A Probleme mit equals und get.Text Java Basics - Anfänger-Themen 12
M Text innerhalb Anführungsstriche als "eins" auswerten Java Basics - Anfänger-Themen 5
V Text aus einer .txt dynamisch ins applet einpassen Java Basics - Anfänger-Themen 0
H Text durch Checkbox erscheinen lassen Java Basics - Anfänger-Themen 2
U markierten Text auf Zeichen zuvor/danach pruefen Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben