# String um zeichen ergänzen



## u6g58h8i67roi (4. Dez 2007)

ich habe einen string blah = "blah" und ich möchte nun eine schleife bauen die solange blah nicht 26 zeichen lang ist immer ein leerzeichen hinzufügt. 
ich habe das schon versucht aber irgendwie will das net so funzen wie ich möchte


```
for (int e = blah.length();26 >= e; e++){
                 blah = blah + " ";
                 }
```

bitte um hilfe =)


----------



## SlaterB (4. Dez 2007)

while(blah.length() < 26){ 
    blah = blah + " "; 
}

bzw einfach nur >= in < ändern? ne doch nicht, wieso gehts denn nicht?


```
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        String blah = "a";
        for (int e = blah.length(); 26 > e; e++)
        {
            blah = blah + " ";
        }
        System.out.println(blah.length());


    }

}
```
kommt doch hin, mit >= zwar 27 und nicht 26, aber das ist ja ein kleiner Fehler


----------



## u6g58h8i67roi (4. Dez 2007)

das problem ist das blah aus einer TreeMap kommt, und wenn ich das so mache wie du mir sagst dann kommt ne exception :


```
Exception in thread "main" java.lang.NullPointerException
        at DNA.java.Berechnung$1.compare(Berechnung.java:231)
        at DNA.java.Berechnung$1.compare(Berechnung.java:229)
        at java.util.TreeMap.getEntryUsingComparator(TreeMap.java:351)
        at java.util.TreeMap.getEntry(TreeMap.java:322)
        at java.util.TreeMap.get(TreeMap.java:255)
        at DNA.java.Berechnung.main(Berechnung.java:255)
Java Result: 1
```


----------



## SlaterB (4. Dez 2007)

> und wenn ich das so mache wie du mir sagst dann kommt ne exception

genauer: und wenn du da komische Sachen machst, dann kommt ne exception

dazu kann aber niemand auf der Welt etwas sagen, was in deinem Code so abgeht..


----------



## ARadauer (4. Dez 2007)

lol

ned streiten! while wäre in diesem fall angebrachter. aber egal die erste lösung stimmt ja eh (fast). du musst halt dafür sorgen das dein String nicht null ist.


----------



## u6g58h8i67roi (4. Dez 2007)

hier mein code :


```
package DNA.java;

import java.awt.*;
import java.text.*;
import java.io.* ;
import java.util.*;
import java.lang.*;
import javax.swing.*;
import java.net.* ;



public class Berechnung {
//    private HTMLEditorKit htmlKit;
//    private HTMLDocument doc;
    
    public Berechnung() {}
    
    
    public static void main(String[] berechnung) throws Exception {
        
        
        BufferedReader br0 = new BufferedReader(new InputStreamReader(System.in));
        String[] o ={"nick","read","datum1","onMin"};
        URL url;
        int time = 0;
        double onMinD;
        int i =0;
        String[] nicks = {"","","","","","","","","",""};
        Double[] werte = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
        
        String sy = "";
        String gut ="";
        String nick = "";
        String read = "";
        String datum1 = "";
        String onMin ="";
        int y = 0;
        
        System.out.println("bitte zehn nicks eingeben,diese bitte mit komma trennen");


//beispieleingabe die funktioniert :
// Bussiiigirl,Freier Noi,Mirko24,Gina D,Audi 80 B4 Fahrer,Essener84,vbmaus,XXBadBoyT,boah ey 110,Soul1982


        DateFormat df = new SimpleDateFormat("dd.MM.yyyy");
        DateFormat defaultDate = DateFormat.getDateInstance();
        String datum = defaultDate.format(new java.util.Date());
        Date to = df.parse(datum);
        
        StringTokenizer st = new StringTokenizer(br0.readLine() , ",");
        while (st.hasMoreTokens()) {
            for (int x =0; x <= 9; x++) {
                
                nick = "http://knuddels.de/ww/"+st.nextToken();
                
                
                if (nick.contains(" "));
                {
                    nick = nick.replace(" ","_");
                    
                    url = new URL(nick);
                    Exception fehler = new Exception();
                }
                //System.out.println(nick);
                
                BufferedReader br1 = new BufferedReader(new InputStreamReader(url.openStream()));
                
                
                while((read = br1.readLine()) != null){
                    
                    
                    
                    
                    
                    read = read.replace("<HTML><HEAD><META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=", "");
                    read = read.replace("\"></HEAD></HTML>", "");
                    
                    url = new URL(read);
                    
                    BufferedReader br2 = new BufferedReader(new InputStreamReader(url.openStream()));
                    
                    while((read = br2.readLine()) != null){
                        
                        
                        
                        nick = nick.replace("http://knuddels.de/ww/", "");
                        
                        if (read.contains("<FONT FACE=\"Arial\">
[B]"))//(b == 45)
                        {
                            
                            
                            read = read.replace("<FONT FACE=\"Arial\">
[B]", "");
                            read = read.replace("<FONT COLOR=\"#000000\" SIZE=2>[/B]<FONT COLOR=\"000000\"> hat sich am [B]", "");
                            
                            if (read.contains("http://spenden.knuddels.de")) {
                                read = read.replace("<a href=\"http://spenden.knuddels.de\" target=_blank><img border=0 src=\"../../images/ico_ribbon.gif\"></a> ", "") ;
                                read = read.replace("<FONT COLOR=\"#000000\" SIZE=2>[/B]<FONT COLOR=\"000000\">hat sich am [B]", "");
                                
                            }
                            
                            
                            if (read.contains("&")) {
                                read = read.replace("&", " ");
                            }
                            if (nick.contains("_")) {
                                nick = nick.replace("_", " ");
                            }
//                            System.out.println(nick);
                            int zeichen = nick.length();
                            
                            
                            int k= 0;
                            int h = nick.length();
                            if (zeichen == nick.length()){
                                
                                
                                nick = read.substring(0, h);
                                
                                k = nick.length() + 10 ;
                                
                                datum1 = read.substring( h, k);
                                //                              System.out.println("das ist datum1 " + datum1);
                                String time1 = read.substring(h + 39, h + 47);
                                
                                String blah = nick + datum1 + "[/B]<FONT COLOR=\"000000\"> um " + time1 + " bei Knuddels registriert und seitdem schon [B]";
                                read = read.replace(nick + datum1 + "[/B]<FONT COLOR=\"000000\"> um " + time1 + " bei Knuddels registriert und seitdem schon [B]", "");
                                //                            System.out.println(read);
                                String ez = read.substring(0, 10);
                                String[] n = {"0","1","2","3","4","5","6","7","8","9"};
                                
                                for (int a =0; a <= 9; a++) {
                                    String t = ez.substring(a, a+1);
                                    for (int j =0; j <= 9; j++) {
                                        if  (t.contains(n[j])){
                                            onMin = onMin + n[j];
                                            //                                  System.out.println(onMin);
                                        }}}
                                
                                
                                
                                
                                
                                
                                //                        System.out.println("Minuten = " + onMin);
                                //                      System.out.println("Datum = " + datum1);//df.format()
                                onMinD  = Double.parseDouble( onMin ) ;
                                
                                //                    System.out.println(onMinD);
                                
                                
                                Date from = df.parse(datum1);
                                double diffMillis = to.getTime() - from.getTime();
                                double diffMins =  diffMillis / (1000 * 60 );
                                //ausrechnen der minuten und der stunden
                                double erg = (100 / diffMins ) * (double) onMinD ;
                                
                                double stunden = erg * 0.24  ;
                                double minuten = stunden * 60 ;
                                
                                //Runden der Werte auf zwei stellen hinter dem komma
                                erg = Math.round( erg * 100. ) / 100.;
                                //                  System.out.println(erg);
                                stunden = Math.round( stunden * 100. ) / 100.;
                                minuten = Math.round( minuten * 100. ) / 100.;
                                
                                String som = "";
                                String hours = "Das entspricht " + stunden + " Stunden am Tag";
                                String hour = "Genau eine Stunde am Tag";
                                String mins = "das sind " + minuten + " minuten am tag";
                                //wenn es weniger als eine stunde ist dann werden die minuten ausgegeben!
                                if     ( stunden > 1 ) {
                                    som = hours;
                                } else {
                                    if (stunden == 1){
                                        som = hour;
                                    }
                                    if ( stunden < 1) {
                                        som = mins;
                                    }
                                }
                                
                                
                                
                                
                                
                                String diff = "Die Differenz in Minuten ist " + diffMins + " Minuten" ;
                                String regDateO = "Du hast dich am " + df.format(from) + " hier registriert";
                                String onTime = "Du warst " + erg  + " % Deines Lebens hier Online seit Du dich registriert hast";
                                String sOderM = som;
                                
                                //Eigendliche Ausgabe.
                                
//                                System.out.println(diff);
//                                System.out.println(regDateO);
//                                System.out.println(onTime);
//                                System.out.println(som);
                                
                                
                                
//                                System.out.println("#" + regDateO + "#" + onTime + "#" + som);
                                onMin = "" + "";
                                nicks[i] = nick ;
                                
                                werte[i] = erg ;
                                
                                i++;
                                
                                //aufräumen
                                
                                
                            } //2. if bedingung wird geschlossen
                        } //1. if bedingung wird geschlossen
                    } //2. while schleife wird geschlossen
                    br2.close();
                } //1. while schleife wird geschlossen
                
                br1.close();
            }
            br0.close();
        }
        final Map<String, Double> map = new HashMap<String, Double>();
        map.put(nicks[0],werte[0]);
        map.put(nicks[1],werte[1]);
        map.put(nicks[2],werte[2]);
        map.put(nicks[3],werte[3]);
        map.put(nicks[4],werte[4]);
        map.put(nicks[5],werte[5]);
        map.put(nicks[6],werte[6]);
        map.put(nicks[7],werte[7]);
        map.put(nicks[8],werte[8]);
        map.put(nicks[9],werte[9]);
        
        Comparator<String> comparator = new Comparator<String>() {
            public int compare(String a, String b) {
                return -map.get(a).compareTo(map.get(b));                
            }
        };
        
        
        
        Map<String, Double> sortedMap = new TreeMap<String, Double>(comparator);
        sortedMap.putAll(map);
        
        for (String s : sortedMap.keySet()) {
            
        for (int e = s.length(); 26 > e; e++)
        {
            s ="-" + s;
        }
        
        System.out.println("#" + s + " -> " +  sortedMap.get(s));
            
        }
    } //main methode wird geschlossen
} //programm wird geschlossen
```

und hier die Exception :


```
Exception in thread "main" java.lang.NullPointerException
        at DNA.java.Berechnung$1.compare(Berechnung.java:231)
        at DNA.java.Berechnung$1.compare(Berechnung.java:229)
        at java.util.TreeMap.getEntryUsingComparator(TreeMap.java:351)
        at java.util.TreeMap.getEntry(TreeMap.java:322)
        at java.util.TreeMap.get(TreeMap.java:255)
        at DNA.java.Berechnung.main(Berechnung.java:246)
Java Result: 1
```


( die ganzen System.out.printLn sind entweder für mich zum verständniss oder zur fehlersuche drin hab die mal alle auskommentiert da die ja im moment keine rolle spielen)


wie realisiere ich das jetzt mit der zeichenergänzung? ohne das eine Exception angezeigt wird.


----------



## Guest (4. Dez 2007)

Hm. Also ich hab zwar kein Plan was das ganze Map-Zeug ist ^^
Aber fang doch alle paar Schritte erst mal was mit nem System.out.println ab...
z.B. was steht in "s" oder wie lange ist "s" usw. eben.

Mehr weiß ich jetzt auch nicht. Habe jetzt auch keine Zeit mir den ganzen Text durchzulesen

cya


----------



## u6g58h8i67roi (4. Dez 2007)

wenn ich nach zeile 284 system.out.printLn (s);
 mache dann gibt er mir den nick aus, aber wenn ich dann irgendwas in die richtung s = s + " ";
 oder so versuche bekomme ich ne nullpointerException wie oben, ich verstehe nicht was das problem ist,
 ist s denn kein string?


----------



## Joker (4. Dez 2007)

füge in deine comparator Methode mal ein 


```
if(map.containsKey(a) && map.containsKey(b)) {
                     return -map.get(a).compareTo(map.get(b));     
                     } else {
                         System.out.println("nicht gefunden: a:"+a+" b:"+b);
                         return 0;
                     }
```

ein. Dann weißt du wenigstens an welchen Werten es hängt. Du versucht nämlich auf Keys in der Map zuzugreifen die so in der Map nicht existieren. (ps.: kannst natürlich das selbe auch über try-catch erledigen )



ps.: Java ist eine Objektorientierte Sprache


----------



## lukian (4. Dez 2007)

Hi,

also erstmal klingt die Idee, die Keys eines Hashs künstlich mit Leerzeichen zur verlängern ein wenig sonderbar und ich vermute mal, dass es elegantere Wege zur Lösung deines Problems (was immer das sein mag) gibt. Die Exception taucht allerdings in Zeit 246 auf und liegt vermutlich daran, dass sortedMap null ist bzw. keyset() null zurück gibt . Woran das liegt kann ich Dir aber beim besten Willen nicht sagen.

Ich würde Dir vorschlagen, dass Du erzählst, was Du eigentlich vor hast und WARUM du die Leerzeichen anhängen willst. Denn deine Idee kann einfach nicht der richtige Weg sein.

Gruß,
lukian


----------



## u6g58h8i67roi (4. Dez 2007)

oh dann erkläre ic mal was ich machen will,
also ich schreibe das programm in erste linie um so viel von java wie möglich lernen zu können,
ich hatte aber am anfang keine idee was ich machen soll,
da ich in einem bestimmten chat angemeldet bin und dort einen chatter gesehen habe der einmal etwas gepostet hat was sich "suchtywerte top ten" nannte mit einer rangliste von chattern die einen bestimmten wert hatten
hab ich mir zu allererst überlegt wie dieser wert wohl zustande kommt, das hab ich dann mit der berechnung realisiert, als nächstes musste ich jetzt noch einen weg finden die werte die ich dafür brauche irgendwoher zu bekommen,
da man in diesem chat ab einer gewissen onlinezeit einen rang bekommt und ab diesem rang eine eigen htmlseite mit seinem profil hat,
dachte ich mir ich lese einfach die relevanten werte aus (onlineminuten und registrierungsdatum),
dann brauchte ich noch eine vernünftige ausgabe,
die hab ich jetzt auch "eigendlich", denn ich möchte das ganze etwas schöner ausgegeben haben

eine # entspricht in dem chat einem zeilenumbruch mit ....... davor beispiel :

```
#hallo#lalala
```
wird zu 

```
........hallo
........lalala
```

und ich möchte nicht das die tabelle so ausgegeben wird :

Eingabe im chat:


```
#~~~~~~~~~~~~~~>Suchtwerte Top-Ten<~~~~~~~~~~~~~~##Superzicke Nina ->
 25.57#aboleo -> 22.05#InuYasha18 -> 12.89#SexyGirl1086 -> 11.58#gunersblumer -> 10.51#Herzdieb1 ->
 10.18#LuXuzChica -> 8.91#chillbaba -> 8.75#Bad-Angel-m -> 7.28#Sebastian016 -> 4.45
```

Ausgabe im Chat:


```
.........~~~~~~~~~>Suchtywerte Top-ten<~~~~~~~~~~
.........
.........TiggerLady22 -> 18.12
.........Werwolfjäger -> 16.59
.........miriam1987w i love you -> 11.31
.........Herzdieb1 -> 10.18
.........Bias01 -> 10.01
.........Gina D -> 8.69
.........Freier Noi -> 7.53
.........HoneyBunny18 -> 5.35
.........Green Lantern -> 5.14
.........wilder-Mann -> 3.63
```

sondern das sie so ausgegeben werden :


```
.........~~~~~~~~~>Suchtywerte Top-ten<~~~~~~~~~~
.........
.........1.)     TiggerLady22                    18.12
.........2.)     Werwolfjäger                    16.59
.........3.)     miriam1987w i love you          11.31
.........4.)     Herzdieb1                       10.18
.........5.)     Bias01                          10.01
.........6.)     Gina D                          8.69
.........7.)     Freier Noi                      7.53
.........8.)     HoneyBunny18                    5.35
.........9.)     Green Lantern                   5.14
.........10.)    wilder-Mann                     3.63
```

das sieht etwas ordentlicher aus =)


----------



## u6g58h8i67roi (4. Dez 2007)

ist die erklärung genau genug oder soll ich noch etwas ergänzen?


----------



## domar (4. Dez 2007)

```
for (String s : sortedMap.keySet())
```

Was soll das heißen???

Du gehst jeden String s durch, der in sortedMap.keySet() drinn ist oder??

Wenn du das wirklich bezwecken willst frag ich mich, wie das geht!
Ich kenn das nur, wenn man einen Vector durchgehen will!


----------



## u6g58h8i67roi (4. Dez 2007)

ich gehe jeden String s durch und gebe ihn dann in einer zeile aus und seinen zugehörigen wert, was soll daran so kurios sein?


----------



## lukian (4. Dez 2007)

Das funktioniert schon so richtig. Jede Klasse die das Interface 'Iterable' implementiert kann auf diese Weise verwendet werden.

Allerdings hatte Joker das Problem anscheinend schon längst erkannt und einen Tipp gegeben. Dein Comparator ist komplett falsch implementiert. 

Probier's mal mit

```
public int compare(String o1, String o2) {
	return -o1.compareTo(o2);
}
```

Gruß,
lukian


----------



## u6g58h8i67roi (4. Dez 2007)

hmm ich glaube keiner hier mag meine postings wirklich lesen oder? mein problem besteht nicht im code selber der ist fehlerfrei und funktioniert auch ganz toll

nur möchte ich die ausgabe um ein paar leestellen erweitern, das ist das einzige problem was ich habe,

und da s anscheinend = null ist aber dennoch ein string ausgegeben wird bei System.out.printLn (s) weiß ich nicht wie ich das realisieren soll.

ich könnte jetzt zwar alles wieder in zwei arrays schreiben lassen und diese arrays dann ausgeben lassen und um die entsprechenden zeichen ergänzen, aber das wäre viel zu viel code und würde in einem wirrwarr enden wo ich nacher selbst nicht mehr durchblicke, ich denke da muss es eine bessere lösung geben wie ich mit s direkt weiterarbeiten kann


----------



## Joker (4. Dez 2007)

@lukian: dein Code wird aber nicht funktionieren. Er möchte ja nicht die beiden Strings a und b vergleichen, sondern den Inhalt der Map mit den Keys a und b 



> nur möchte ich die ausgabe um ein paar leestellenerweitern, das ist das einzige problem was ich habe, und da s anscheinend = null ist aber dennoch ein string ausgegeben wird bei System.out.printLn weiß ich nicht wie ich das realisieren soll.



wie wäre es mit dem Einfügen von Tabulatoren (mit \t)? Das ist doch genau das was du suchst.


```
System.out.println("spalte1\t\tspalte2")
System.out.println("s1\t\ts2")
```

sollte zum Beispiel in der von dir gewünschten Art ausgegeben werden


----------



## SlaterB (4. Dez 2007)

@DNA:
die gleiche Exception tritt hier auf:

```
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        final Map<String, Double> map = new HashMap<String, Double>();
        map.put("a", 5.);
        map.put("d", 6.);
        map.put("c", 4.);
        Comparator<String> comparator = new Comparator<String>()
            {
                public int compare(String a, String b)
                {
                    return -map.get(a).compareTo(map.get(b));
                }
            };

        Map<String, Double> sortedMap = new TreeMap<String, Double>(comparator);
        sortedMap.putAll(map);

        for (String s : sortedMap.keySet())
        {
            for (int e = s.length(); 26 > e; e++)
            {
                s = "-" + s;
            }
            System.out.println("#" + s + " -> " + sortedMap.get(s));
        }
    }

}
```
Problem: 
du rufst sortedMap.get() mit einem String auf, zudem kein Value in der Map enthalten ist,
bei der Suche nach diesem Wert wird das compareTo des Comparators verwendet,

dieser vergleicht die zugehörigen Values, 
da der Value für den neuen String null ist, liefert irgendwann
null.compareTo(other);
eine NullPointerException

> und da s anscheinend = null ist 
s ist nicht null


----------



## lukian (4. Dez 2007)

Joker hat gesagt.:
			
		

> @lukian: dein Code wird aber nicht funktionieren. Er möchte ja nicht die beiden Strings a und b vergleichen, sondern den Inhalt der Map mit den Keys a und b



Och Schade. Und ich dachte, Du hättest Ahnung, Joker  :wink: Ich habe Comparable genau so implementiert, wie es richtig ist und es funktioniert auch einwandfrei. Wir sollten hier aber keine Grundlagendiskussionen über Java führen.

Gruß,
lukian


----------



## u6g58h8i67roi (4. Dez 2007)

@slater ja die exception kommt weil ich die ifbedingung nicht auskommentiert habe das weiß ich ,aber sonst ist mein code ja in ordnung

@Joker ich mag ungerne 10 zeilen mit System.out.printLn (blah) haben ,ich möchte das daß was ich will automatisch eingefügt wird,von mir aus auch tabulatoren.


----------



## lukian (4. Dez 2007)

Also jetzt bin ich verwirrt. 
Wenn Du eh weißt, woher die Exception kommt, warum hast Du dann vorhin den Code + Exception gepostet? Irgendwie hab ich jetzt keine Lust mehr, außer du hast ein kleines, kompilierbares Beispiel in welchem Du uns dein Problem klarmachst.

Gruß,
STeffen


----------



## u6g58h8i67roi (4. Dez 2007)

ich habe den code + Exception gepostet um zu zeigen das die methode mit der if bedingung nicht funktioniert

hier bitte:


```
package DNA.java;

import java.awt.*;
import java.text.*;
import java.io.* ;
import java.util.*;
import java.lang.*;
import javax.swing.*;
import java.net.* ;



public class Berechnung {
//    private HTMLEditorKit htmlKit;
//    private HTMLDocument doc;
    
    public Berechnung() {}
    
    
    public static void main(String[] berechnung) throws Exception {
        
        
        BufferedReader br0 = new BufferedReader(new InputStreamReader(System.in));
        String[] o ={"nick","read","datum1","onMin"};
        URL url;
        int time = 0;
        double onMinD;
        int i =0;
        String[] nicks = {"","","","","","","","","",""};
        Double[] werte = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
        
        String sy = "";
        String gut ="";
        String nick = "";
        String read = "";
        String datum1 = "";
        String onMin ="";
        int y = 0;
        
        System.out.println("Zehn nicks durch komma getrennt eingeben bitte");
        DateFormat df = new SimpleDateFormat("dd.MM.yyyy");
        DateFormat defaultDate = DateFormat.getDateInstance();
        String datum = defaultDate.format(new java.util.Date());
        Date to = df.parse(datum);
        
        StringTokenizer st = new StringTokenizer(br0.readLine() , ",");
        while (st.hasMoreTokens()) {
            for (int x =0; x <= 9; x++) {
                
                nick = "http://knuddels.de/ww/"+st.nextToken();
                
                
                if (nick.contains(" "));
                {
                    nick = nick.replace(" ","_");
                    
                    url = new URL(nick);
                    Exception fehler = new Exception();
                }
                //System.out.println(nick);
                
                BufferedReader br1 = new BufferedReader(new InputStreamReader(url.openStream()));
                
                
                while((read = br1.readLine()) != null){
                    
                    
                    
                    
                    
                    read = read.replace("<HTML><HEAD><META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=", "");
                    read = read.replace("\"></HEAD></HTML>", "");
                    
                    url = new URL(read);
                    
                    BufferedReader br2 = new BufferedReader(new InputStreamReader(url.openStream()));
                    
                    while((read = br2.readLine()) != null){
                        
                        
                        
                        nick = nick.replace("http://knuddels.de/ww/", "");
                        
                        if (read.contains("<FONT FACE=\"Arial\">
[B]"))//(b == 45)
                        {
                            
                            
                            read = read.replace("<FONT FACE=\"Arial\">
[B]", "");
                            read = read.replace("<FONT COLOR=\"#000000\" SIZE=2>[/B]<FONT COLOR=\"000000\"> hat sich am [B]", "");
                            
                            if (read.contains("http://spenden.knuddels.de")) {
                                read = read.replace("<a href=\"http://spenden.knuddels.de\" target=_blank><img border=0 src=\"../../images/ico_ribbon.gif\"></a> ", "") ;
                                read = read.replace("<FONT COLOR=\"#000000\" SIZE=2>[/B]<FONT COLOR=\"000000\">hat sich am [B]", "");
                                
                            }
                            
                            
                            if (read.contains("&")) {
                                read = read.replace("&", " ");
                            }
                            if (nick.contains("_")) {
                                nick = nick.replace("_", " ");
                            }
//                            System.out.println(nick);
                            int zeichen = nick.length();
                            
                            
                            int k= 0;
                            int h = nick.length();
                            if (zeichen == nick.length()){
                                
                                
                                nick = read.substring(0, h);
                                
                                k = nick.length() + 10 ;
                                
                                datum1 = read.substring( h, k);
                                //                              System.out.println("das ist datum1 " + datum1);
                                String time1 = read.substring(h + 39, h + 47);
                                
                                String blah = nick + datum1 + "[/B]<FONT COLOR=\"000000\"> um " + time1 + " bei Knuddels registriert und seitdem schon [B]";
                                read = read.replace(nick + datum1 + "[/B]<FONT COLOR=\"000000\"> um " + time1 + " bei Knuddels registriert und seitdem schon [B]", "");
                                //                            System.out.println(read);
                                String ez = read.substring(0, 10);
                                String[] n = {"0","1","2","3","4","5","6","7","8","9"};
                                
                                for (int a =0; a <= 9; a++) {
                                    String t = ez.substring(a, a+1);
                                    for (int j =0; j <= 9; j++) {
                                        if  (t.contains(n[j])){
                                            onMin = onMin + n[j];
                                            //                                  System.out.println(onMin);
                                        }}}
                                
                                
                                
                                
                                
                                
                                //                        System.out.println("Minuten = " + onMin);
                                //                      System.out.println("Datum = " + datum1);//df.format()
                                onMinD  = Double.parseDouble( onMin ) ;
                                
                                //                    System.out.println(onMinD);
                                
                                
                                Date from = df.parse(datum1);
                                double diffMillis = to.getTime() - from.getTime();
                                double diffMins =  diffMillis / (1000 * 60 );
                                //ausrechnen der minuten und der stunden
                                double erg = (100 / diffMins ) * (double) onMinD ;
                                
                                double stunden = erg * 0.24  ;
                                double minuten = stunden * 60 ;
                                
                                //Runden der Werte auf zwei stellen hinter dem komma
                                erg = Math.round( erg * 100. ) / 100.;
                                //                  System.out.println(erg);
                                stunden = Math.round( stunden * 100. ) / 100.;
                                minuten = Math.round( minuten * 100. ) / 100.;
                                
                                String som = "";
                                String hours = "Das entspricht " + stunden + " Stunden am Tag";
                                String hour = "Genau eine Stunde am Tag";
                                String mins = "das sind " + minuten + " minuten am tag";
                                //wenn es weniger als eine stunde ist dann werden die minuten ausgegeben!
                                if     ( stunden > 1 ) {
                                    som = hours;
                                } else {
                                    if (stunden == 1){
                                        som = hour;
                                    }
                                    if ( stunden < 1) {
                                        som = mins;
                                    }
                                }
                                
                                
                                
                                
                                
                                String diff = "Die Differenz in Minuten ist " + diffMins + " Minuten" ;
                                String regDateO = "Du hast dich am " + df.format(from) + " hier registriert";
                                String onTime = "Du warst " + erg  + " % Deines Lebens hier Online seit Du dich registriert hast";
                                String sOderM = som;
                                
                                //Eigendliche Ausgabe.
                                
//                                System.out.println(diff);
//                                System.out.println(regDateO);
//                                System.out.println(onTime);
//                                System.out.println(som);
                                
                                
                                
//                                System.out.println("#" + regDateO + "#" + onTime + "#" + som);
                                onMin = "" + "";
                                nicks[i] = nick ;
                                
                                werte[i] = erg ;
                                
                                i++;
                                
                                //aufräumen
                                
                                
                            } //2. if bedingung wird geschlossen
                        } //1. if bedingung wird geschlossen
                    } //2. while schleife wird geschlossen
                    br2.close();
                } //1. while schleife wird geschlossen
                
                br1.close();
            }
            br0.close();
        }
        final Map<String, Double> map = new HashMap<String, Double>();
        map.put(nicks[0],werte[0]);
        map.put(nicks[1],werte[1]);
        map.put(nicks[2],werte[2]);
        map.put(nicks[3],werte[3]);
        map.put(nicks[4],werte[4]);
        map.put(nicks[5],werte[5]);
        map.put(nicks[6],werte[6]);
        map.put(nicks[7],werte[7]);
        map.put(nicks[8],werte[8]);
        map.put(nicks[9],werte[9]);
        
        Comparator<String> comparator = new Comparator<String>() {
            public int compare(String a, String b) {
                return -map.get(a).compareTo(map.get(b));                
            }
        };
        
        
        
        Map<String, Double> sortedMap = new TreeMap<String, Double>(comparator);
        sortedMap.putAll(map);
        
        for (String s : sortedMap.keySet()) {
                       
        
        System.out.println("#" + s + " -> " +  sortedMap.get(s));
        //System.out.println("#" + s + "\t\t\t\t\t\t" + sortedMap.get(s)) ;
        
        }//letzte for schleife wird geschlossen
    } //main methode wird geschlossen
} //programm wird geschlossen
```

der code funktioniert , nimm als eingabe am besten

aede,dnaofdeath,piage,holgi,zorn,strawberry123,albion,joyce-fay,deep dive corporation,electrica


----------



## u6g58h8i67roi (4. Dez 2007)

moah zum hundertsten mal,

ich will die ausgabe mit ein paar zusätzlichen tabulatoren oder leerzeichen versehen damit es etwas übersichtlicher  aussieht, aber das bekomme ich irgendwie nicht hin

so jetzt verstanden?

ich brauche nur jemand der mir eine möglichkeit nennt wie ich mit dem wert S so unglaublich sachen anstelle wie leezeichen einfügen oder tabulatoren oder von mir aus auch schafe, mir egal, hauptsach ich kann dann etwas einfügen, am besten so das nachher 27 zeichen von dem nick eingenommen werden und danach erst der wert  steht also NACH insgesammt 27 zeichen


----------



## Guest (4. Dez 2007)

Also,
ich weiß gar nicht, warum du dich beschwerst. Wer unfähig ist, vernünftige und nachvollziehbare Fragen zu stellen muss sich über wirre Antworten nicht wundern. Ich weiß immer noch nicht, von was für einer if-Abfrage du faselst. Ich hoffe, der Unterschied zu einer FOR-Schleife ist dir bewusst.

Folgendes Beispiel zeigt, warum dein Code nicht funktionieren kann. Ich erklär's jetzt nicht, sondern da musst du mal alleine durch. So schwer isses ja nich.


```
public static void main(String[] args){
	TreeMap<String, Double> map = new TreeMap<String, Double>();
	map.put("bla", 1.2);
	
	for (String element : map.keySet()) {
		// aendere 'bla' auf 'blubb' (wirklich?)
		element = "blubb";
	}
	System.out.println(map.get("bla")); // funktioniert
	System.out.println(map.get("blubb")); // kann nicht funktionieren			
}
```


Vielleicht das nächste mal selbst versuchen, ein kleines Beispiel zu erstellen, anstatt rumzumeckern.

Gruß,
lukian


----------



## u6g58h8i67roi (5. Dez 2007)

Bin fertig mit meinem Programm, fange jetzt mit der GUI an =)

danke an alle die mit versucht haben zu helfen, =)


----------

