//******************************************************************************************************** // CLASS: CSE205 (classname.java) // // DESCRIPTION // Counts the numbers of runs // // COURSE AND PROJECT INFO // CSE205 Object Oriented Programming and Data Structures, Spring Semester secion a and 2018 // Project Number: 1 // // AUTHOR // Russell Hill ([email protected]) //********************************************************************************************************// import classesimport java.io.*;import java.util.ArrayList;import java.util.Scanner;// Main.javapublic class Main{     public static void main(String pArgs)     {          // Create main obj          Main mainObject = new Main();          // run the main          mainObject.run();     }     // run() reads in the ints, runs the list,     // and increments the count and then writes the      //totals to the output file     public void run()     {          // enter 2 constants          final int RUNS_UP = 1;          final int RUNS_DN = 0;                   // create the arrayLists needed          ArrayList list = new ArrayList();          ArrayList listRunsUpCount = new ArrayList();          ArrayList listRunsDnCount = new ArrayList();          ArrayList listRunsCount = new ArrayList();          // call in read file          list = ReadFile(“p01-in.txt”);          // count the runs using the findRuns method and store in listRunsUp          listRunsUpCount = FindRuns(list, RUNS_UP);                   // count the runs and store on listRunsDnCount          listRunsDnCount = FindRuns(list, RUNS_DN);          // use Merge() to merge the lists          listRunsCount = Merge(listRunsUpCount, listRunsDnCount);          // tells where to output          Output(“p01-runs.txt”, listRunsCount);     }     // reads in each digit     private ArrayList ReadFile(String fileName)     {          ArrayList list = new ArrayList();          //catching block          try          {              File file = new File(fileName);              Scanner input = new Scanner(file);                           if (file.exists())              {                   while(input.hasNext())                   {                        String str = input.next();                        //int to str conversion                        for(int i=0;i FindRuns(ArrayList pList, int pDir)     {          ArrayList listRunsCount = new ArrayList();          listRunsCount = arrayListCreate(pList.size(), 0);          int i = 0, x = 0;          while (i < pList.size() - 1)          {              if (pDir == 1 && pList.get(i) <= pList.get(i + 1))              {                   x++;              }              else if (pDir == 0 && pList.get(i) >= pList.get(i + 1))              {                   x++;              }              else              {                   if (x != 0)                   {                        listRunsCount.set(x, listRunsCount.get(x) + 1);                        x = 0;                   }              }              i++;          }          if (x != 0)          {              listRunsCount.set(x, listRunsCount.get(x) + 1);          }          return listRunsCount;     }     // Takes in two array lists and returns one     private ArrayList Merge(ArrayList pListRunsUpCount,              ArrayList pListRunsDnCount)     {          ArrayList listRunsCount = arrayListCreate(                   pListRunsUpCount.size(), 0);          for (int i = 0; i < pListRunsUpCount.size() - 1; i++)          {              listRunsCount.set(i,                        pListRunsUpCount.get(i) + pListRunsDnCount.get(i));          }          return listRunsCount;     }     // Method that takes 2 ints and creates an arrayList     private ArrayList arrayListCreate(int pSize, int pInitValue)     {          ArrayList list = new ArrayList();          for (int i = 0; i < pSize; i++)          {              list.add(pInitValue);          }          return list;     }     // Writes the output taking the file name and the run list     private void Output(String pFilename, ArrayList pListRuns)     {          File file;          PrintWriter out;                int sumpListRuns = 0;          //catch block          try          {              file = new File(pFilename);              for (int k = 1; k < pListRuns.size() - 1; k++)              {                   sumpListRuns += pListRuns.get(k);              }              out = new PrintWriter(file);              out.println("runs_total, " + sumpListRuns);              for (int k = 1; k < pListRuns.size() - 1; k++)              {                   out.println("runs_" + k + ", " + pListRuns.get(k));              }              out.close();          }          catch (FileNotFoundException pExcept)          {              System.out.println("Sorry, could not create 'p01-runs.txt'" +"for writing. Stopping.");              System.exit(-1);          }     }   }