Gegeben ist eine Datei “daten.txt”, welche je Zeile einen ganzzahligen Wert besitzt. Lesen Sie diese Datei ein und protokollieren in der Ausgabedatei “doppelt.txt” alle in der gelesenen Datei doppelt vorkommenden Werte.
Wie lautet das Programm, wenn Werte auch mehrfach (> 2-fach) in der Eingabedatei vorkommen können, jedoch jeder mehrfach vorkommende Wert nur einmal in der Ausgabedatei protokolliert werden soll?
Lösung
import java.io.*;
import java.util.Scanner;
import java.util.Vector;
public class Aufgabe26
{
public static void main(String[] args)
{
// Variablen Deklaration
String sQuellDateiName, sZielDateiName;
File fleDatei;
Scanner scnEingabe;
PrintStream pstAusgabe;
Vector<Integer> iZahlen;
Vector<Integer> iDoppelt;
// Variablen Initialisierung
sQuellDateiName = "daten.txt";
sZielDateiName = "doppelt.txt";
fleDatei = new File(sQuellDateiName);
iZahlen = new Vector<Integer>();
iDoppelt = new Vector<Integer>();
try
{
scnEingabe = new Scanner(fleDatei);
while (scnEingabe.hasNextInt())
iZahlen.add(scnEingabe.nextInt());
for (int i = 0; i < iZahlen.size(); ++ i)
for (int j = 0; j < i; ++ j)
if (iZahlen.elementAt(j) == iZahlen.elementAt(i))
{
boolean bNeu = true;
for (int k = 0; k < iDoppelt.size(); ++ k)
if (iZahlen.elementAt(j) == iDoppelt.elementAt(k))
bNeu = false;
if (bNeu)
iDoppelt.add(iZahlen.elementAt(i));
} // end if
} // end try
catch (FileNotFoundException e)
{
System.out.println("Datei konnte nicht gelesen werden!");
} // end catch
fleDatei = new File(sZielDateiName);
try
{
pstAusgabe = new PrintStream(fleDatei);
for (int i = 0; i < iDoppelt.size(); ++ i)
pstAusgabe.println(iDoppelt.elementAt(i));
} // end try
catch (FileNotFoundException e)
{
System.out.println("Datei nicht gefunden");
} // end catch
}
}

