Problem mit der Bearbeitung von einen Text Dokument in Java

JohnnyBLA

Grünschnabel
Guten Abend :)

ich hab ein Problem, ich hab ein Text Dokument im Schema (Test;TEST;Test;TEST;TEST) mit mehren Zeilen. Nun will ich das nach einen ";" der nächste Buchstabe groß geschrieben wird und dann in einen neuen Dokument gespeichert wird. Hab mich mal durch Java ist eine Insel gelesen, jedoch nicht mit Erfolg. Hab zwar die split() methode gefunden, die mir nützlich erschien, aber ich bin nicht darauf gekommen, wie ich das in meinen Programm einbringen kann.

Ich bin für jeden Lösunganstatz bzw. Lösung dankbar :)

Schönen Abend noch

edit:
Meine Arbeit bis jetzt
Code:
	public static void main(String[] args) throws IOException
		
	{
		BufferedReader eingabe = null;

				// Einlesen
				eingabe = new BufferedReader ( new FileReader ("Apon1.txt") );
				StringBuffer buffer = new StringBuffer();
				BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream( "MyFile.txt", true ) ) );


				
     			String txt;
     			while((txt=eingabe.readLine())!=null)
     			{
     			
     				
        		String[] splittxt = txt.split(";");
        		
        		for(int i=0;splittxt[i]!=null;i++)
        		{
        			
        			String txt3 = new String();
        			String txt1 = new String(splittxt[i]);
        			txt1 = txt1.toLowerCase();
        			StringBuffer txt2 = new StringBuffer(txt1);
        			txt2.setCharAt(0, Character.toUpperCase(txt1.charAt(0)));
   					txt3 = txt2.toString();
   					System.out.println(txt3); 
        			out.write(txt3);
					out.newLine();
        		
     			}
        		
        	out.close();
        	eingabe.close();		

			}
	
		
	}

Hab ein leeres MyFile.txt und die Fehlermeldung Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Apotheke.main(Apotheke.java:32)
 
Zuletzt bearbeitet:
in Pseudocode beschrieben:
  • mit split(";") in ein array a auseinander ziehen
  • jedes Element im array bearbeiten:
    substring und toUpper sind hier deine Freunde
  • mit einer Schleife setzt du dann alle Elemente vom Array a wieder in einen String:
Code:
String s = "";
for (int i=0; i< a.length(); i++) s += a[i] + ";";
  • Fertig ;)
 
Danke :)
mein neues Programm geht auch so weit, jedoch hab ich gesehn das ich auch noch nach einen Leerzeichen groß schreiben muss.

meine neue Frage, kann ich mit Split(); zwei Argumente benutzen oder muss ich mein ganzen Programm wieder auf den Kopfschmeißen

mfG
Oli
Code:
import java.io.*;

public class Apotheke2
{
	public static void main(String[] args) throws IOException
		
	{
		BufferedReader eingabe = null;
				
				
				
				// Einlesen
				eingabe = new BufferedReader ( new FileReader ("Apon1.txt") );
				StringBuffer buffer = new StringBuffer();
				BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream( "MyFile1.txt",true ) ) );
				int j=0;
				int n=0;
				int q=18;

				
     			String txt;
     			while((txt=eingabe.readLine())!=null)
     			{
     			
     			
        		String[] splittxt = txt.split("\\;");
        		n=splittxt.length;
        		System.out.println(n);
        		
        		for(int i=0;n-1>=i;i++)
        		{
        			String txt3 = new String();
        			String txt1 = new String(splittxt[i]);
        			txt1 = txt1.toLowerCase();
        			StringBuffer txt2 = new StringBuffer(txt1);
        			txt2.setCharAt(0, Character.toUpperCase(txt1.charAt(0)));
        			txt2.append("\t");
   					txt3 = txt2.toString();
   					
   					System.out.print(txt3);
   					
        			out.write(txt3);
					

        		}
        		out.newLine();
        		
     			}
        		
        	out.close();
        	eingabe.close();		

			}
			
	
	
	}
 
Dann würd ich eher zeichenweise durch den String parsen mit charAt().

D.h. du überprüfst jedes Zeichen im String, ob es ein Leerzeichen oder ein ; ist und setzt das nächste Zeichen im String (geht nur mit bsichen substring()-basteln) als Großbuchstabe.

edit: Verwende bitte die Tags für deinen geposteten Code.
 
Zuletzt bearbeitet:
Danke für deine Tipps :), wollts jetzt aber mit der Splitmethode machen -> ich weiß Dickkopf :D
doch nur hab ich das Problem das er nach 5 Zeile aufhört und mir die Fehlermeldung:
Code:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(String.java:687)
    at Apotheke2.main(Apotheke2.java:45)

gibt. Weiß jemand Rat ? Schon mal dankeschön und einen schönen Tag noch :)

Code:
	while((txt=eingabe.readLine())!=null)
		
		{


		String[] splittxt = txt.split(" |;|-");
		n=splittxt.length;
		System.out.println(n);

		for(int i=0;n-1>=i;i++)
			
			{
			String txt3 = new String();
			String txt1 = new String(splittxt[i]);
			txt1 = txt1.toLowerCase();
			StringBuffer txt2 = new StringBuffer(txt1);
			txt2.setCharAt(0, Character.toUpperCase(txt1.charAt(0)));
			txt2.append("\t");
			txt3 = txt2.toString();

			System.out.print(txt3);

			out.write(txt3);
			}
		out.newLine();

		}
 
Ich kann nur vermuten, dass der String leer ist und dadurch eine Exception geworfen wird, weil charAt(0) kein Zeichen finden kann.

Hier dein Code ein wenig überarbeitet mit der Abfrage, ob der String leer ist:
Java:
String[] splittxt = txt.split(" |;|-");

for (int i = 0; i < splittxt.length; i++) {
	if (!splittxt[i].equals("")) { // Testen, ob String nicht leer ist
		StringBuffer sb = new StringBuffer(splittxt[i].toLowerCase());
		sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
		sb.append("\t");

		System.out.print(sb); // impliziert ein .toString()

		out.write(sb);
	}
}
out.newLine();
 
Zurück