Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich hab da mal ne Frage und zwar:
Lese ich eine textdatei aus, bei der ich die Wörter zähle, also Anzahl.
Diese mach ich anhand von Leerzeichen und Returns.
jetzt komm ich nicht auf die lösung, wie ich die dopplung rausbekomme: (wenn zwischen zwei wörter zwei leerzeichen sind sagt er mir er habe drei Wörter.)
please help
thx
hier die Syntax.
-------
Code:
public static void summiere()
{
int text;
int summe = 0;
int ch;
int zaehler = -1;
try
{
BufferedReader in = new BufferedReader(new FileReader(
"C:\\Documents and Settings\\p862454\\Desktop\\test.txt"));
String wort = "";
String satz= "";
// lese Zeichen für Zeichen
while ((ch = in.read()) != -1)
{
//wenn Zeichen gleich Enter od. Leerzeichen
if ((ch == '\n') || (ch == '\u0020' ))
{
System.out.println("Sie haben ein Wort gefunden!" + '\n');
//nicht hochzählen bei zwei leerzeichen oder returns
zaehler++;
//wort mit leerzeichen ausgeben
satz = satz + wort + " ";
// Test.summiere(summe, satz);
wort = "";
System.out.print(satz + '\n');
}
else
{
wort = wort + (char)ch;
// Summe bilden => Wort zurücksetzen
//Test.summiere(summe, wort);
}
}
in.close();
System.out.println("Anzahl der Wörter: " + zaehler);
System.out.print(satz);
}
[code]
mal ne essentielle frage - ich habe es bisher so verstanden das du die anzahl der unterschiedlichen wörter in der datei haben willst. ist das so oder willst du nur die anzahl der wörter allgemein?
Anzahl der Wörter (nicht gleiche Wörter) mittels einzelner Zeichen festellen.
--> Gedanke. einzelne Zeichen also char sprich wenn ich ein Return oder ein Leerzeichen habe fängt ein neues wort an.
dann soll ich die Buchstaben ausgaben und zwar als wörter bzw. als Satz --> funktioniert.
und dann soll das Programm, falls in der *.txt Zahlen vorkommen diese summieren und ausgeben.
--> funkt noch nicht
imo ist das die lösung?
aber das "bzw. als Satz " check ich nicht... man soll also doppelte worte rausstreichen aber trotzdem sätze ausgeben!?
Code:
package main;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(
(args.length > 0) ? args[0] : "input.txt")));
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
HashMap<String, String> hm = new HashMap<String, String>();
int numberResult = 0;
String in = null;
try {
while ((in = br.readLine()) != null) {
while (in.length() > 0) {
int spaceIdx = in.indexOf(" ");
int tabIdx = in.indexOf("\t");
int effectiveIdx = 0;
if (spaceIdx >= 0)
effectiveIdx = spaceIdx;
if (tabIdx >= 0 && tabIdx < effectiveIdx)
effectiveIdx = tabIdx;
if (effectiveIdx == 0)
effectiveIdx = in.length();
String tmp = in.substring(0, effectiveIdx);
in = in.substring(effectiveIdx);
while (in.startsWith(" ") || in.startsWith("\t"))
in = in.substring(1);
try {
numberResult += Integer.parseInt(tmp);
} catch (Exception e) {
}
hm.put(tmp, tmp);
}
}
} catch (IOException e) {
e.printStackTrace();
return;
}
System.out.println(hm.values() + " / " + numberResult);
}
}
bye
/edit mir schon klar das das nicht die eleganteste lösung ist.. besser wärs das via regexpression zu trennen... aber das wär wohl erst recht nicht das was der lehrer wollte^^