You are not logged in.

  • Login

1

Wednesday, November 1st 2006, 10:35am

zeichenweise auslesen aus datei und ausgabe als histogramm

hi leute,

habe mal folgendes Problem. Ich habe eine Datei mit folgendem Inhalt.Java macht Spass. Nun will ich diese Datei auslesen, und zwar zeichenweise. Zum Speichern der Zeichen nehme ich ein Hashtable. Je nachdem wie oft das Zeichen vorkommt, wird ein Sternchen abgespeichert, der die Anzahl repräsentiert.
Das Prog sieht so aus.


Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Hashtable;
 
public class CharCounter {
 
	Hashtable<Character,String> hm = new Hashtable<Character,String>();
	FileReader fr;
	int c;
 
	public CharCounter() {	
		try {
			fr = new FileReader("text.txt");
			leseDaten();
			gebeDatenAus();
		} catch (IOException e) {
			System.out.println("Fehler beim Auslesen der Datei");
		}		
	}
 
 
	public void leseDaten() throws IOException {
 
		String counter = "";
 
	    while((c = fr.read()) != -1){		    	
		     if(hm.containsKey((char)c)){		    
		    	counter = (hm.get(c))+"*";		    	
		    	hm.put(new Character((char) c),counter);		    	
		     }else hm.put(new Character((char) c),"*");		    	
	    }		
	    fr.close();		
	}	
 
	private void gebeDatenAus() {  
 
	    Enumeration e = hm.keys();
            while(e.hasMoreElements()) {
                    Object zeichen =  e.nextElement();
                    System.out.println(zeichen + ":\t" + hm.get(zeichen));
		    }		              
	}
 
	public static void main(String[] args) {
		new CharCounter();
	}
}




Nun das Problem. Beim Ausgeben auf die Konsole tritt folgender Fehler auf.


p: *
m: *
S: *
h: *
: null*
c: *
J: *
a: null*
v: *
t: *
s: null*



Habe ein ähnliches Thema hier im Forum gefunden und es als Beispiel genommen. Das prog war glaube ich von d0nUt.


danke

2

Wednesday, November 1st 2006, 10:41am

:shock:
sieht ja schrecklich aus kann ich das im nachhinein noch editieren?

3

Wednesday, November 1st 2006, 9:45pm

Quoted from ""dachs""

sieht ja schrecklich aus kann ich das im nachhinein noch editieren?


hab dein highlighting korrigiert.. generell gibts dazu ja den edit knopf

hab hier mein Wordcount Programm veröffentlicht:
http://www.easy-coding.de/java-wordcount-mit-hashtable-t776.html

zum Problem.. du vergleichst hier 2 Objekte.. also nicht die Inhalte, sondern die Verweise
kleines Beispiel:

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Hashtable;
public class CharCounter {
        Hashtable<Character,String> hm = new Hashtable<Character,String>();
 
        public CharCounter() { 
        		char c = 'c';
                hm.put(c, "*asdasd");
                char d = 'd';
                System.out.println(hm.get(d));              
                System.out.println(hm.get(c));
        }
 
        public static void main(String[] args) {
                new CharCounter();
        }
}


Ausgabe:

Quoted

null
*asdasd

Social bookmarks