/* * Intro to Programming CSE 1310 * University of Texas at Arlington */ package code23octf18stringmanipulation; import java.io.File; import java.io.FileNotFoundException; import java.util.Arrays; import java.util.Scanner; /** * * @author jcmtiernan */ public class Code23OctF18StringManipulation { /** * @param args the command line arguments */ public static void main(String[] args) { String dataFile = "BMTtitleMix.txt"; File inputData = new File (dataFile); Scanner inFile; boolean dataValid = true; String[] inputWords = new String[12]; String[] titles = new String[100]; int[] bookYears = new int[100]; int[] movieYears = new int[100]; int[] tvYears = new int[100]; try { inFile = new Scanner(inputData); } catch (FileNotFoundException fnfe) { inFile = new Scanner(System.in); System.out.println("\nInput file \""+dataFile+"\" was not found"); } Scanner inData = new Scanner(System.in); String inString = ""; int line = 0; int bmt = 0; String leastWord = "zzzz"; String greatestWord = "AAAA"; do { inString = inFile.nextLine(); inData = new Scanner(inString); inputWords = inString.split("\t"); // split assigns each word to an array element in inputWords bmt = 0; for(int i = 0; i < inputWords.length; i++) { if (!inputWords[i].equals("")) // note that inputWords != "" does not work { System.out.println("Line "+line+": inputWords["+i+"]: "+inputWords[i]); // Finding alphabetical least and greatest if ((inputWords[i].compareTo(leastWord) < 0) && // compareTo gives <0, =0, or >0 value (inputWords[i].compareTo("9999") > 0)) { leastWord = inputWords[i]; //System.out.println("Current leastWord is : "+leastWord); } if (inputWords[i].compareTo(greatestWord) > 0) // compareTo gives <0, =0, or >0 value { greatestWord = inputWords[i]; //System.out.println("Current greatestWord is : "+greatestWord); } // capture the years // doesn't handle error in numeric data if (inputWords[i].equals("Book")) { bmt++; bookYears[line] = Integer.valueOf(inputWords[i+1]); } else if (inputWords[i].equals("Movie")) { bmt++; movieYears[line] = Integer.parseInt(inputWords[i+1]); } else if (inputWords[i].equals("TV")) { bmt++; tvYears[line] = Integer.valueOf(inputWords[i+1]); } if ((bmt >= 1) && (inputWords[i].charAt(0) > '9')) { titles[line] = inputWords[i]; } } } line++; } while (inFile.hasNext() && dataValid) ; System.out.println("\nThe earliest alphabetical title is "+leastWord); System.out.println("The latest alphabetical title is "+greatestWord); System.out.printf("\n%34s%8s%8s%8s\n","","Book","Movie","TV"); System.out.printf("\n%34s%8s%8s%8s\n","Title","Publish","Premier","Air"); for(int k=0; k < titles.length; k++) { if ((bookYears[k] != 0) || (movieYears[k] != 0) || (tvYears[k] != 0)) { System.out.printf("%-34s%8s%8s%8s\n",titles[k], (bookYears[k] == 0? "": Integer.toString(bookYears[k])), (movieYears[k] == 0? "": String.valueOf(movieYears[k])), (tvYears[k] == 0? "": (""+tvYears[k]))); } } System.out.println(""); System.out.println("Printing array elements as one vector"); System.out.println(Arrays.toString(titles)); System.out.println(Arrays.toString(bookYears)); String[] names = new String[line]; names = Arrays.copyOf(titles, line); System.out.println("\nPrinting copy of array as one vector"); System.out.println(Arrays.toString(names)); Arrays.sort(names); System.out.println("\nPrinting sorted copy of array(Arrays.sort(names)) as one vector"); System.out.println(Arrays.toString(names)); printList(names); // delete an element at array location 10 System.out.println("\nDelete an element at array location 10"); names[10] = ""; printList(names); // remove the blank line by moving other items System.out.println("\nRemove the blank line by moving other items"); for (int m=0; m < (names.length-1); m++) { if (names[m].isEmpty()) { names[m] = names[m+1]; names[m+1] = ""; } } printList(names); // add an element at location 22 System.out.println("\nAdd an element at location 22 - move elements to make space"); int target = 22; for (int m=(names.length-1); m > target; m--) { if (names[m].isEmpty()) { names[m] = names[m-1]; names[m-1] = ""; } } printList(names); names[target] = "Magic Burns"; System.out.println("\nAdding element \"Magic Burns\" at location 22"); printList(names); // delete an element equal to 1955 System.out.println("\nDelete an element equal to 1955"); int loc = -1; for (int m=0; m < (names.length-1); m++) { if (bookYears[m] == 1955) { loc = m; } } printList(bookYears); // remove the element by moving other items System.out.println("\nRemove the element by moving other items"); for (int m=loc; m < (names.length-1); m++) { bookYears[m] = bookYears[m+1]; bookYears[m+1] = 0; } printList(bookYears); } public static void printList(String[] list) { for (int m=0; m < list.length; m++) { System.out.println(list[m]); } } public static void printList(int[] list) { for (int m=0; m < list.length; m++) { System.out.println(list[m]); } } }