Textzeile einlesen und vereinfachen?

D

Deadpool

Gast
Hey Leute,
ich bin absoluter Java-Amateur, muss in meinem Studium aber ein kleines Praktikum absolvieren, in dem ich eine kleine Aufgabe programmieren muss. Ich weiß von dritten, was letztes Jahr drankam und wollte mich dieser Aufgabe nun widmen.

Es geht darum, dass man eine Zeichenkette wie zb [abcccaabcaba] hat. diese soll nun vereinfacht werden und zwar so, dass am ende rauskommt: 4a 3b 4c. sprich ich muss lediglich durch die zeichenkette durch und zählen was wo steht.

mein grundgedanke war ein array mit 11 werten anzulegen und jeweils die buchstaben per hand einzugeben. anschließend würde ich 3 variablen erstellen. nun nehme ich den ersten wert des array, lese ihn aus und vergleiche ob er ='a', ='b' oder ='c' ist und erhöhe dementsprechend die variable für den buchstaben.
am ende gebe ich dann einfach die variablen aus.

soweit zur theorie, praktisch sieht das ganze (zumindest für mich) etwas komplizierter aus. zum einen habe ich das gefühl, dass das von hand eingeben der werte, also pro wert eine neue zeile etwas umständlich ist, zum andern bin ich mir unsicher, ob die grundidee so korrekt ist.

ich muss dazu sagen, dass ich wirklich sehr wenig ahnung von java bzw allgemein programmieren habe. der informatik kurs in der schule war leider eher schlecht -.-

ich möchte nicht den eindruck erwecken, von euch die ganze lösung zu bekommen, allerdings tauchen bei mir oft nach 1,5 zeilen schon tausend rote pop ups auf, weil ich einfach syntax fehler baue^^

vielen dank schoneinmal für eure hilfe, ich schaue mal weiter youtube videos :)
 
N

nillehammer

Gast
soweit zur theorie, praktisch sieht das ganze (zumindest für mich) etwas komplizierter aus. zum einen habe ich das gefühl, dass das von hand eingeben der werte, also pro wert eine neue zeile etwas umständlich ist, zum andern bin ich mir unsicher, ob die grundidee so korrekt ist.
Das ist tatsächlich zu umständlich. Speicher es Dir als String. Mit einem String hast du auch Methoden, um an die einzenlen Zeichen ranzukommen. Z.B. charAt oder toCharArray. Nähere Infos in der API-Doku: String (Java Platform SE 7 )

Was für Deinen Fall hier ideal wäre, wenn man die Beziehung von Zeichen ==> Anzahl herstellen könnte (Du "mappst" also das Zeichen auf die Anzahl). In vielen Sprachen heißt so eine Datenstruktur assoziativer Array. In Java heißt das Map (Map (Java Platform SE 7 )). Schaue Dir ein paar Beispiele zu Maps in Java an. Dann solltest du es hinkriegen.
 

Templarthelast

Bekanntes Mitglied
Eine einfachere Methode, falls du es mit den Maps nicht so haben solltest, ist ein zusätzliches 26 Felder großes Int-Array, in dem du das Vorkommen der einzelnen Buchstaben speichern kannst. Sowas wie:

Gehe alle Buchstaben druch:
Falls Buchstabe = a
Wert in array[0] = Wert in array[0]++;
sonst Falls Buchstabe = b
...
 

Bleiglanz

Gesperrter Benutzer
noch einfacher: zähle alle (!) Zeichen
Java:
        String s = "aabCdasfD";
        
        char[] a = s.toCharArray();
        
        int[] counts = new int[65536];
        
        for(int i=0;i<a.length;i++) counts[a[i]]++;
        
        for(int i=0;i<counts.length;i++){
            if(counts[i]>0)
                System.out.println("Das Zeichen "+Character.valueOf((char) i)+" kommt "+counts[i]+" mal vor");
        }
Ob das wohl alles stimmt? Da kannst du auch gleich was über die Konvertierungen (char)<->(int) und das elende Vorzeichenproblem lernen :)
 

anti-held

Bekanntes Mitglied
Hatte auch mal so ein Praktikum...
Habs mithilfe eines HashMaps gelöst!

Hier meine Lösung:

Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public class Parser {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		System.out.println("=====================");
		System.out.println("=== Parser ==========");
		System.out.println("=====================");
		System.out.println();
		
		CountingList list = new CountingList();
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		String eingabe = "";

		try {
			while (eingabe != null) {
				list.clear();
				System.out.println("Text eingeben:");
				eingabe = reader.readLine();
				for (char c : eingabe.toCharArray()) {
					list.add(c);
				}
				System.out.println("-> " + list.toString() + "\n");
			}
		} catch (IOException ex) {
			System.out.println("Es ist eine IOException aufgetreten.");
		}
	}
}

class CountingList {

	private Map<Character, Integer> map = new HashMap<Character, Integer>();

	public void add(Character o) {
		map.put(o, map.containsKey(o) ? map.get(o) + 1 : 1);
	}

	public String toString() {
		StringBuilder sb = new StringBuilder();
		for (Entry<Character, Integer> entry : map.entrySet()) {
			sb.append(entry.getKey() + "" + entry.getValue() + " ");
		}
		return sb.deleteCharAt(sb.length() - 1).toString();
	}

	public void clear() {
		map.clear();
	}
}

komplett in die Datei Parser.java schreiben.
 

mla.rue

Bekanntes Mitglied
Geschrieben als ich mit Java anfing und mich mit Zeichenketten beschäftigt habe, es macht was es soll, wäre nur die Frage, obs auch einfacher ginge.


Java:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ZaehleBuchstaben {
	private List<Character> listLetters = new ArrayList<>();
	private Map<Character, Integer> map = new HashMap<>();

	public void countLetters(String strZuUntersuchen) {
		createLetterList(strZuUntersuchen);
		System.out.println(strZuUntersuchen);
//		System.out.println(listLetters);

		for(int i = 0; i<listLetters.size();i++){
			countOccurrences(strZuUntersuchen, listLetters.get(i));
		}

		for(int i = 0; i<listLetters.size();i++){
			char c = listLetters.get(i);
			System.out.print(c + ": " + map.get(c) + "x" + "\n");
		}
	}

	private void createLetterList(String strZuUntersuchen) {
		for (int i = 0; i < strZuUntersuchen.length(); i++) {
			if (!listLetters.contains(strZuUntersuchen.charAt(i))) {
				listLetters.add(strZuUntersuchen.charAt(i));
			}
		}
	}

	private void countOccurrences(String strZuUntersuchen, char buchstabe) {
		int anzahl = 0;
		for (int i = 0; i < strZuUntersuchen.length(); i++) {
			if (strZuUntersuchen.charAt(i) == buchstabe) {
				anzahl++;
			}
		}
//		System.out.println(buchstabe + ": " + anzahl + "x");
		map.put(buchstabe, anzahl);
	}
}
 
D

Deadpool

Gast
Wow, ersteinmal vielen Dank für eure Hilfe, ihr habt mir schon sehr geholfen!

ich habe versucht aus meinem äußerst begrenzten wissen zumindest einen teil so zu schreiben, wie ich ihn (theoretisch) aus dem kopf können sollte.

und zwar will ich lediglich einen text eingeben, zb: "abbab".

der text soll durchgegangen werden und ich will einfach mittels einer schleife jedes element des strings checken ob es ein 'a' ist.

also zeichen 1: falls ein a dann variable +1, ansonsten nix tun und weitergehen
dann zeichen 2: falls ein a dann variable +1, ansonsten nix tun und weitergehen

und so weiter. raus kam bis jetzt das hier, was nicht funktioniert^^

Java:
String abc ="abbab";

int a = 0;
int x = abc.length();
int zaehler = 0;

for (zaehler<x;abc.charAt(zaehler)='a';a++);

ich hätte also gerne, dass er solange i kleiner als x ist, nachschaut ob der punkt im string an dem der zaehler steht ein 'a' enthält. wenn ja dann soll er die variable a um 1 erhöhen.

logischerweise müsste ich jetzt noch einbauen, dass der zaehler um 1 erhöht wird, allerdings weiß ich nicht wo ich das hinschreiben muss. eigentlich ja hinter das a++ noch, allerdings weiß ich nicht wie die genaue struktur sein muss. außerdem zickt eclipse schon bei der bedingung, also abc.charAt etc rum...warum? er sagt das muss eine variable sein :/

und das so wie ich es gemacht habe, die letzte stelle meines strings nicht gecheckt wird, weil ich gesagt hab, dass der zaehler<x sein muss, ist mir bewusst. müsste schreiben zaehler <= x, aber auch da zickt eclipse rum -.-

danke schoneinmal für eure hilfe, bin wirklich ratlos^^
 

Bleiglanz

Gesperrter Benutzer
verwende sinnvolle Variablennamen (abc?)

= ist die Zuweisung

an charAt(...) kann man nichts zuweisen

== ist der Vergleich

mit einer Variablen a kannst du nicht zählen wieviele a,b,c,... es gibt

du brauchst für jedes zeichen a,b,c,.. einen eigenen zähler
 

Bleiglanz

Gesperrter Benutzer
und

mach nicht alles in der runden Klammer, das ist zu schwer für dich
Java:
        int anzahl_a=0;
        String text ="ababab";
        for (int i=0; i<text.length(); i++ ){
            if(text.charAt(i)=='a') anzahl_a++;
        }
 

mla.rue

Bekanntes Mitglied
also mit KOntrollstrukturen (Schleifen, Bedingungen) solltest du dich noch ausgiebig beschäftigen. Die sind schon essentiell und einfach, wenn es da schon hackt... um ehrlich zu sein weiss ich jetzt nicht, ob du es wirklich nicht hinkriegst, oder zu faul bist (nicht persönlich gemeint).

Schleife von 0 bis Länge Zeichenkette
Wenn Buchstabe an Position gleich a, dann Zähler + 1

Edit: sieht so aus, als hätte es dir Bleiglanz vorgekaut :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Programm, welches eine Textzeile einliest und alle darin enthaltenen Buchstaben umwandelt Java Basics - Anfänger-Themen 3
N TextZeile in einzelne Strings teilen, die mit Komma getrennt sind Java Basics - Anfänger-Themen 4
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
S SeriellenPort einlesen Java Basics - Anfänger-Themen 3
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
S JSON einlesen und benutzen Java Basics - Anfänger-Themen 5
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Einlesen > new Leser Java Basics - Anfänger-Themen 5
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
S CSV einlesen und mit Komma trennen Java Basics - Anfänger-Themen 12
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
L Datein einlesen Java Basics - Anfänger-Themen 1
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
M Einzelzeichen einlesen Java Basics - Anfänger-Themen 2
C (char) Array einlesen Java Basics - Anfänger-Themen 8
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
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
E Einteilung der Räume mit einlesen einer .txt datei Java Basics - Anfänger-Themen 16
P Array einlesen von Konsole Java Basics - Anfänger-Themen 8
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
R Compiler-Fehler Einlesen von Konsolenparameter funtioniert nichtmehr Java Basics - Anfänger-Themen 4
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
H Einlesen Java Basics - Anfänger-Themen 8
H Einlesen von Zahlen Java Basics - Anfänger-Themen 20
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
R txt Einlesen und Verarbeiten Java Basics - Anfänger-Themen 15
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
K Sonderzeichen einlesen Java Basics - Anfänger-Themen 3
L Input/Output XML Datei einlesen (JAXB?) Java Basics - Anfänger-Themen 10
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
I Datei einlesen Java Basics - Anfänger-Themen 11
J Best Practice [Code Verbesserung] TXT einlesen und in Arrayliste speichern Java Basics - Anfänger-Themen 5
A Ungeordnetes Array ordnen, Zahl einlesen und einordnen Java Basics - Anfänger-Themen 23
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
T Input/Output Einlesen eines .txt Files nur bei gesetztem Breakpoint möglich Java Basics - Anfänger-Themen 1
L RSA Public Key einlesen Java Basics - Anfänger-Themen 0
K Datei aus unbekannten Speicherorten einlesen Java Basics - Anfänger-Themen 1
T Datei in Array einlesen "null" Java Basics - Anfänger-Themen 8
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
M Einlesen von Integerwertern aus einer CSV Java Basics - Anfänger-Themen 8
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
K String einlesen und als Variable speichern Java Basics - Anfänger-Themen 8
K .txt einlesen und in ein Array packen Java Basics - Anfänger-Themen 2
M Erste Schritte Zahlen einlesen und auswerten Java Basics - Anfänger-Themen 6
N Best Practice CSV einlesen - Variables Array?! Java Basics - Anfänger-Themen 8
O Klassen Objektnamen für Methodenaufrauf einlesen lassen Java Basics - Anfänger-Themen 2
D Array Werte einlesen und ausgeben? Java Basics - Anfänger-Themen 8
C Java Scanner einlesen von txt Dokument InputMismatch Java Basics - Anfänger-Themen 9
V Hilfe zum Thema einlesen eines Datums Java Basics - Anfänger-Themen 5
E Erste Schritte txt.Datei mit BufferedReader einlesen und in 2D-Array abspeichern Java Basics - Anfänger-Themen 15
S Werte in Array einlesen Java Basics - Anfänger-Themen 2
A Textdatei mit BufferedReader einlesen Java Basics - Anfänger-Themen 0
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben