2 Strings mit Equals vergleichen

Sindthia

Mitglied
Hallo,

Ich bin gerade etwas am verzweifeln weil ich den Fehler einfach nicht finden und langsam das Gefühl habe ich sehe den Wald vor lauter Bäumen nicht mehr.

Ich versuche einen txt nach einem bestimmten Wort zu durchsuchen und dann in einer neuen Txt das Ergebniss auszugeben. Soweit klappt auch eigentlich alles einlesen klappt, genauso wie erstellen der neuen Datei. Doch die equals Methode funktioniert einfach nicht und ich weiß nicht warum. Meiner Meinung nach ist es so korrekt aber es kommt immer false raus. Was nicht sein kann da ich weiß das Beide Wörter enthalten sind im Text.

Ich hoffe mir kann hier jemand helfen, vielen Dank schon einmal.

Liebe Grüße

Java:
    class WordCounter
    {
        public static void main(String[] args) throws IOException
        {
          File f1=new File("c:\\Users\\...\\input.txt"); //Creation of File Descriptor for input file
          FileReader fr = new FileReader(f1);
          BufferedReader br = new BufferedReader(fr); //Creation of BufferedReader object
          PrintWriter out = new PrintWriter(new File("test.txt")); // Erstellen der Ausgabe Txt Datei
          String[] words=null;  //Intialize the word Array and null is a placeholder = no selected value
          String s;
          String[] input = {"Grün", "Gelb"};   // Input words to be searched
          int count = 0;   //Intialize the count to zero
          for (int i=0; i < input.length; i++)
          {
              f1=new File("c:\\Users\\...\\input.txt"); //Creation of File Descriptor for input file
              fr = new FileReader(f1); //new file defined = reset file to beginning
              br = new BufferedReader(fr); //buffered
              s = "MARKER";
              while((s = br.readLine()) !=null) //Reading Content from the file
              {
                  words= s.split(" ");//Split the word using space
             
                      for (String word : words) //for each (after every run in "word" is the value from "words" saved)
                      {    
                         if ( word.equals(input[i])) //Search for the given words in input
                          {
                             count ++;    //If Present increase the count by one
                             out.println(s);
                          }
                      }
              }
              if(count!=0)  //Check for count not equal to zero
              {
                  System.out.println("The word " +input[i]+ " is present for "+count+ " Times in the file");
                  count = 0;
              }
              else
              {
                  System.out.println("The word " +input[i]+ " is not present in the file");
              }
          }
          fr.close(); //close File
          out.close(); //close new made File
        }
    }
 
Zuletzt bearbeitet von einem Moderator:
Ich hatte leider ein paar Problem die richtigen Tags zu finden und habe es aber jetzt korrigiert.

Also ich stehe jetzt vielleicht etwas auf dem Schlauch aber ich verwende i doch gar nicht in Kombination mit words, ich nehme jeden String aus words ja und packe Ihn in word.
Und dann vergleich ich word mit input[i] und das i ist in der ersten For-Schleife intialisiert mit 0 oder habe ich da irgendwo was falsch verstanden.

Ich programmiere noch nicht lange mit Java, daher bin ich mir gerade auch nicht sicher was genau du meinst. Könntest du mir das Bitte einmal genauer erklären.
 
Zuletzt bearbeitet von einem Moderator:
Ich habe diese txt benutzt, Grün und Blau am Anfang hinzugefügt, ist zwar etwas Groß aber es soll wenn für Protokolle funktionieren.

Ja das ist auch mein Problem ich finde den Fehler nicht. Ich weiß echt nicht wo ich den Logikfehler habe
 

Anhänge

Ursache vermutlich:
* Gelb kommt als einzelnes Wort nicht vor
* Grün enthält ein Umlaut, du gibst beim Einlesen der Datei nirgendwo ein Encoding an, der zieht vermutlich das falsche. Wenn die Datei UTF-8 kodiert ist, geht das so wahrscheinlich schief.

Versuch mal den FileReader mit einem Charset zu initialisieren:
Java:
new FileReader(f1, Charset.forName("UTF-8"));
 
Danke, das stimmt ich hatte auch mit anderen Farben es ausprobiert und anderen Begriffen es hat gar nicht geklappt leider.

Ich habe das jetzt so probiert habe noch nie mit Charset gearbeitet, daher weiß ich nicht ganz wie es funktionieren soll und kriege jetzt die Fehlermeldung charset cannot be resolved.
Ich habe versucht mich etwas einzulesen aber verstehe leider nicht was ich daran falsch mache. Könntest du mir da noch einmal bei helfen. Danke sehr

Java:
File f1=new File("c:\\Users\\hilde\\input.txt"); //Creation of File Descriptor for input file
          FileReader fr =new FileReader(f1, charset.forName("UTF-8"));
          BufferedReader br = new BufferedReader(fr); //Creation of BufferedReader object
 
@Kirby_Sike
Danke Flüchtigkeitsfehler, damit hat es geklappt aber leider kriege ich am Ende immer noch kein Ergebniss habe jetzt auch bewusst von Grün weg gewechselt.

Hast du vielleicht noch eine Idee wo mein Fehler sein könnte?
 

Zurück
Oben