Hallo miteinander! Ich habe wiedermal ein kleines Problemchen und komme nicht weiter.
Es geht in der Aufgabe um Folgendes:
Ein String wird eingelesen und auf folgendes überprüft:
Textzeichen sind alle Buchstaben und Ziffern.
Als Satztrenner gelten für diese Aufgabe die folgenden fünf Zeichen in der Klammer(.:;!?)
In der Angabe zur Übung steht weiter:
Als Beispiel Ausgabe ist gegeben:
Zu meinem Problem...
Die erste Ausgabe also "Die Anzahl der Textzeichen" funktioniert soweit.
Allerdings komme ich auf keinen Ansatz wie ich "Wörter" trennen soll. Klar eine zusammenhängende
Folge von einem oder mehreren Textzeichen. Also überprüfe ich ob ein Leerzeichen kommt und erhöhe den Counter. Eine Weitere Bedingung ist sofern ein Satzzeichen nach der Textzeichenfolge kommt. Allerdings ist in meinem Programm das Problem wenn beispielsweise "Hallo... ich bin ein Test" eingegeben wird, zählt er bei allen 3 Punkten den Counter hoch, ich möchte es aber nur für ein Satzzeichen nach der Textzeichenfolge einbauen und genau hier weiß ich nicht weiter. :S
Vielleicht hat jemand eine Idee.
Es geht in der Aufgabe um Folgendes:
Ein String wird eingelesen und auf folgendes überprüft:
- Die Anzahl der Textzeichen,
- die Anzahl der Wörter und
- die Anzahl der Sätze .
Textzeichen sind alle Buchstaben und Ziffern.
Als Satztrenner gelten für diese Aufgabe die folgenden fünf Zeichen in der Klammer(.:;!?)
In der Angabe zur Übung steht weiter:
- Ein Wort ist eine zusammenhängende Folge von einem oder mehreren Textzeichen.
- Ein Satz ist eine Folge von wenigstens einem Wort und einem nachfolgenden Satztrenner.
Zwischenraum spielt für Sätze keine Rolle.
Als Beispiel Ausgabe ist gegeben:
Code:
$ java TextCounts
Anybody out there?
^d
15
3
1
$ java TextCounts
!
^d
0
0
0
- Verwenden Sie keine numerischen Zeichencodes.
- Reguläre Ausdrücke sind tabu.
- Teilen Sie das Programm in Abschnitte auf, die sich um je ein Teilergebnis (Zeichen, Wörter, Sätze) kümmern.
Zu meinem Problem...
Die erste Ausgabe also "Die Anzahl der Textzeichen" funktioniert soweit.
Allerdings komme ich auf keinen Ansatz wie ich "Wörter" trennen soll. Klar eine zusammenhängende
Folge von einem oder mehreren Textzeichen. Also überprüfe ich ob ein Leerzeichen kommt und erhöhe den Counter. Eine Weitere Bedingung ist sofern ein Satzzeichen nach der Textzeichenfolge kommt. Allerdings ist in meinem Programm das Problem wenn beispielsweise "Hallo... ich bin ein Test" eingegeben wird, zählt er bei allen 3 Punkten den Counter hoch, ich möchte es aber nur für ein Satzzeichen nach der Textzeichenfolge einbauen und genau hier weiß ich nicht weiter. :S
Vielleicht hat jemand eine Idee.
Java:
package uebung_string;
public class TextCounts {
public final static String ALPH = "abcdefgijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZöäüÖÄÜß0123456789";
public final static String BETA = ".:;!?";
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String text = "Der Test... ";
// char[] c = new char[text.length()];
int textZeichen = 0;
int wortCount = 0;
char leer = ' ';
char point = '.', dblPoint = ':', semicolon = ';', exclMark = '!', questMark = '?';
//Anzahl aller Buchstaben+Zahlen in einem Satz
for(int i = 0; i<text.length(); i++)
{
// Jeder Buchstabe einzeln bei 0 erster Buchstabe etc.
char bz = text.charAt(i);
// Hier wird die Zeichenfolge aus ALPH in bj eingelesen(Jeder einzeln) und dann mit den einzelnen Buchstaben des obigen
// Strings verglichen. Ist das jeweilige Zeichen dabei, wird der textZeichen Counter hochgezählt.
// Der textZeichen Counter zählt alle Zeichen im String zusammen, ohne Leerzeichen und ohne Satzzeichen.
for(int j = 0; j< ALPH.length(); j++) {
char bj = ALPH.charAt(j);
if(bj == bz) {
textZeichen++;
}
}
}
// Anzahl der Wörter wird erfasst.
for(int k = 0; k<text.length(); k++)
{
// Hier wird wiedermal der String eingelesen
char w = text.charAt(k);
// Wir überprüfen ob das nächste Zeichen ein Leerzeichen ist, falls ja dann geht der Wort Counter hoch.
if(w == leer)
{
wortCount++;
// if(w == point || w == dblPoint || w == exclMark || w == questMark || w == semicolon)
// break;
}
for(int l = 0; l < BETA.length(); l++)
{
char bj2 = BETA.charAt(l);
if(w == bj2)
{
wortCount++;
}
}
}
//Counter der Textzeichen. (Anzahl aller Buchstaben+Zahlen in einem Satz)
System.out.println("Die Anzahl der Textzeichen " + textZeichen);
System.out.println("Die Anzahl der Wörter "+ wortCount);
}
}