# Filterung von geraden und ungeraden Zahlen aus einer Datei



## Casper (7. Jan 2005)

Hallo zusammen!

Ich bin ein Programmier-änfanger und komme da bei so ner Problemstellung net ganz weiter:

In einer Textdatei sollen Zahlen (z.B. 2 3 6 -13 0 9) enthalten sein. Diese soll man auslesen können und mittels Filter (geht ja wohl nur mit %-operator) die gerade Zahlen in eine Datei und die ungeraden in eine andere schreiben.

Das Problem ist jetzt irgendwie, ob ich die Datei zeichenorientiert mit nen BufferedReader (geht ja dann mit der methode readLine() leider nur zeilenweise) auslesen soll, oder byteorientiert mit FileInputStream read()...check das irgendwie net!!

vielleicht kann mir jemand helfen...Danke.


----------



## Student (7. Jan 2005)

was verstehst du nicht?
werde mal etwas konkreter.

mit dem modulo-operator hast du dir schon die lösung bzgl. des "filtern von geraden zahlen" gegeben.

grüße ben.


----------



## Casper (7. Jan 2005)

ich verstehe nicht, wie ich die Zahlen aus der Datei auslesen und diese dann Filter kann. Das soll ja allgemein funktionieren und ich weiß ja z.B gar nicht, wie viele Zahlen sich in der Datei befinden...


----------



## bygones (7. Jan 2005)

lies zeilenweise aus und trenner per split (String Klasse) oder StringTokenizer


----------



## Casper (7. Jan 2005)

Ok, Danke schon mal, das hat mir schon a bissle geholfen, nur leider speichert er mir die "Zahlen dann byteweise in die Dateien...wie könnte ich diesen Fehler noch umgehen?
Ich gebe mal den Code an:

```
import java.io.*;
import java.util.*;

class Filter
{


  public static void main (String []args)
  {
    try
    {
      FileInputStream fis=new FileInputStream("quelle.txt");
      InputStreamReader isr=new InputStreamReader(fis);
      BufferedReader buffer=new BufferedReader(isr);

      String string=buffer.readLine();
      StringTokenizer token=new StringTokenizer(string);
      
      FileOutputStream fos=new FileOutputStream("gerade.txt");
      OutputStreamWriter osw=new OutputStreamWriter(fos);

      FileOutputStream fos2=new FileOutputStream("ungerade.txt");
      OutputStreamWriter osw2=new OutputStreamWriter(fos2);
      
      
      while(token.hasMoreElements())
      {
           int i=Integer.parseInt(token.nextToken());
           String s;
           
           if(i%2==0)
           {

             osw.write(i);
           }
           else
           {
             osw2.write(i);
           }
      }
      
      osw.close();
      osw2.close();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }


  }

}
```


----------

