import java.io.*;
import java.util.*;
//this class for enter number from kayboard and store them in file.dat
class OpFile
 {
        private int count;
        private int number;
    public OpFile()
      {
       count=0;
       number = 0;
      }
 public int open( )throws IOException
   {
   
        System.out.println("Type N integers, type zero to stop:");
        PrintWriter myfile1=new PrintWriter("mynumbers.dat");
            Scanner intofile = new Scanner(System.in);
            number=intofile.nextInt();
			if(number==0)System.exit(0);//if enter the frist number zero
   while(number!=0){
            myfile1.println(number);
            count++;
	try 	{            
            number=intofile.nextInt();
	}catch (InputMismatchException e) {  //these sentences for check the input  integer number 
			System.out.println("Input/conversion problem! Make sure you type an integer");
			intofile.next();//returen enter integer number
			}
					
                  }
            myfile1.close();
			    System.out.println("Elements saved into mynumbers.dat");
	return count;// use the count for give size to array in next class.
    }
 }
 
   
 							
//this class for read numbers from file and perform some operation.

class ReFile
  {
       
        private int data[];
        
    public ReFile (int size)
	       {
        data=new int[size];

           }
public void getData()throws IOException{ // this method for read number from file and put them in array.
        int i=0;
        Scanner readFile=new Scanner(new File("mynumbers.dat"));
    while(readFile.hasNext()==true){

           data[i]=readFile.nextInt();
            
               i++;
            }
	
	       }
	
public void sortArray()//this method for sort number in file via array
	{
	    int tempValue,i;
	
	for (int j = 1; j < data.length; j++) {
            tempValue = data[j];
            i=j;
    while (i>0&&data[i-1]>tempValue) {
                  data[i] = data[i-1];
                  i--;
            }
            data[i] = tempValue;
            
        }
	}

public void remove()//this method for remove duplicate numbers
    {
        int len=data.length;
    for( int i = 0; i < len; i++)
        {
            for(int j = i + 1; j < len; j++)
            {
                while(data[i] == data[j])
                {
                    for(int k = j; k < len - 1; k++)
                        data[k] =data[k + 1];
                    len--;
                    if(j == len) break;
                }
            }
        }
        int t[] = new int[len];
    for(int l = 0; l < len; l++)
          t[l] = data[l];
          data = t;
		      System.out.print("Sorted Elements are:");
		for (int i=0;i<data.length;i++){
            System.out.print("     "+data[i]);
            } 
            
		}
			  
public void max_min()//this method for find the min and max between numbers.
		{
		int maxval = data[0];
    for(int i = 0; i < data.length;i++){
        if(data[i] > maxval)
        maxval = data[i];
         }
        int minval = data[0];
    for(int i = 0; i < data.length; i++){
        if(data[i] < minval)
        minval = data[i];
         }
        System.out.println("Maximum element is:"+maxval);
         System.out.println("Minimum element is:"+minval);

	}
	
public void median() { //this method for find the median between numbers.
        int middle = data.length/2;
    if (data.length%2 == 1) {
        System.out.println("Median is:"+ "  "+data[middle]);
         }
	else 
	   {
               System.out.println("Median is:  "+(data[middle-1] + "  "+data[middle]));
       }
   }	
   
public void mean() {//this method for find the mean these numbers.
       double mean=0;
       double sum = 0;
    for (int i = 0; i < data.length; i++) {
            sum =sum+ data[i];
             mean=sum / data.length;
		 }
        System.out.println("Mean is:"+ "  "+mean);
    }

  public void store()throws IOException
       {
         PrintWriter NewFile=new  PrintWriter("mysortmynumbers.dat") ;//open new file and store the number after operation
	for(int i=0; i<data.length; i++) {
	         NewFile.println(data[i]);
            }
        NewFile.close();
        System.out.println();
        System.out.println("Sorted Elements have been successfully saved into mysortednumbers.dat");

        }
 }
 
public class Prog
   {
  public static void main (String args[])throws IOException
     {
    OpFile file1 = new OpFile();
         int s= file1.open();
    ReFile file2=new ReFile(s);
        file2.getData();
        file2.sortArray();
        file2.remove();
        file2.store();
        file2.max_min();
        file2.mean();
        file2.median();
     }
 }