In: Physics
Using Java
Project 2: Deduplication
Write a program that reads a file of numbers of type int and outputs all of those numbers to another file, but without any duplicate numbers. You should assume that the input file is sorted from smallest to largest with one number on each line. After the program is run, the output file should contain all numbers that are in the original file, but no number should appear more than once. The numbers in the output file should also be sorted from smallest to largest with one number on each line.
Your program should not assume that there is a fixed number of entries to be read, but should be able to work with any number of entries in both the input and output files.
This means that you should not use arrays, lists,
arraylists,
linked lists, sets, maps, trees, or any other multi-element
data structure.
Instead, your program should read in and write out numbers from the input and output files at the same time, eliminating duplicates from the output file as you go.
Your program should obtain both file names from the user. For the original (input) file, create a text file that stores one number per line with several duplicates in sorted order. The output file should be created by your program. When completed, your program should display on the console:
Submit program files for all classes, copies of your input and output text files, and a PrintScreen of the console output when your program is run.
Example:
Input File Output File Contents Contents 1 1 3 3 3 60 3 75 60 80 60 100 75 130 75 140 75 985 80 1000 80 100 130 140 985 985 985 1000
Sample console dialog, where input from the user is underlined in italics
Enter input file name or full path: numbers.txt Enter output file name or full path: output.txt There were 18 numbers input, 10 output, and 8 duplicates.
Please ensure that all of your methods (except main) are commented using Javadoc-style tags (@param and @return) and your algorithms adequately describe how your programs solve the Problem Statements.
import java.io.File;
import java.io.PrintWriter;
import java.util.Scanner;
public class RemoveDupInFile {
public static void main(String[] args) throws Exception {
// opening file to read
Scanner sc1 = new Scanner(System.in);
System.out.println("Enter input file name or full path: ");
String iFileName = sc1.nextLine();
System.out.println("Enter output file name or full path:
output.");
String oFileName = sc1.nextLine();
int inputCount = 1, outputCount = 1;
Scanner sc = new Scanner(new File(iFileName));
PrintWriter pw = new PrintWriter(new File(oFileName));
int prev = -1, num;
num = sc.nextInt();
while (sc.hasNext()) {
// checking if it is not previous number
inputCount++;
if (num != prev) {
outputCount++;
pw.println(num);
}
// making current num as prev
prev = num;
// reading next num
num = sc.nextInt();
}
System.out.println("There were " + inputCount + " numbers input, "
+ outputCount + " output, and "
+ (inputCount - outputCount) + " duplicates. ");
pw.println(num);
pw.close();
}
}