Filterung von geraden und ungeraden Zahlen aus einer Datei

Status
Nicht offen für weitere Antworten.

Casper

Mitglied
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

Top Contributor
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

Mitglied
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...
 
B

bygones

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

Casper

Mitglied
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:
Code:
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();
    }


  }

}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben