/* * Intro to Programming CSE 1310 * University of Texas at Arlington */ package code5mar19; import java.io.File; import java.io.FileNotFoundException; import java.util.InputMismatchException; import java.util.NoSuchElementException; import java.util.Scanner; /** * * @author jcmtiernan */ public class Code5Mar19 { /** * @param args the command line arguments */ public static void main(String[] args) { /** * @param args the command line arguments */ File nameAgeFile = new File("namesDates"); Scanner nameDataFile = new Scanner(System.in); try { nameDataFile = new Scanner(nameAgeFile); } catch (FileNotFoundException fnfe) { System.out.println("No data file found"); } final int MAXNUM = 50; // format should be lastName, firstName ; SHName pubYr movieYr String[] lastNm = new String[MAXNUM]; String[] firstNm = new String[MAXNUM]; String[] shNm = new String[MAXNUM]; int[] pubYr = new int[MAXNUM]; int[] movYr = new int[MAXNUM]; int[] age = new int[MAXNUM]; String oneLine = ""; Scanner inLine; int index = 0; boolean valid = true; while (nameDataFile.hasNextLine()) { valid = true; inLine = new Scanner(nameDataFile.nextLine()); inLine.useDelimiter(", "); try { lastNm[index] = inLine.next(); lastNm[index] = removeBlanks(lastNm[index]); } catch (NoSuchElementException nsee) { System.out.println("::: No data available on current line"); valid = false; } inLine.reset(); if (valid && inLine.hasNext()) { inLine.next(); // read comma inLine.useDelimiter(" : "); try { firstNm[index] = inLine.next(); //System.out.println("firstNm["+index+"] is "+firstNm[index]); firstNm[index] = removeBlanks(firstNm[index]); } catch (NoSuchElementException nsee) { System.out.println("::: No more data available on current line"); valid = false; } } inLine.reset(); if (valid && inLine.hasNext()) { inLine.next(); // read colon inLine.useDelimiter("[+0-9]"); try { shNm[index] = inLine.next(); shNm[index] = removeBlanks(shNm[index]); } catch (NoSuchElementException nsee) { System.out.println("::: No more data available on current line"); valid = false; } } inLine.reset(); //System.out.println("before reading numbers at index "+index+" valid is "+valid); if (valid && inLine.hasNext()) { try { pubYr[index] = inLine.nextInt(); movYr[index] = inLine.nextInt(); //System.out.println("Read in pubYr "+pubYr[index]+" and movYr "+movYr[index]); } catch (InputMismatchException ime) { System.out.println("::: Invalid numeric data in file"); valid = false; } catch (NoSuchElementException nsee) { System.out.println("::: No more data available on current line"); valid = false; } } if (valid) { age[index] = movYr[index] - pubYr[index]; System.out.printf("%s %s, called %s, is at least %d years old\n", firstNm[index], lastNm[index], shNm[index], age[index]); } index++; //System.out.println("index = "+index); } System.out.println(""); System.out.printf("%10s %10s %10s %5s\n","SHName","First","Last","PubYear"); for(int i=0; i < index; i++) { System.out.printf("%10s %10s %10s %5d\n", shNm[i], firstNm[i], lastNm[i],pubYr[i]); //System.out.printf("%15s %24\n",firstNm[i],lastNm[i]); } System.out.println(""); for(int i=0; i < index; i++) { System.out.println(age[i]); } // bubble sort int temp = 0; for (int j=0; j < index; j++) for (int k=0; k < index-1; k++) { if (age[k] > age[k+1]) { // swap temp = age[k]; age[k] = age[k+1]; age[k+1] = temp; } } System.out.println("\nAfter sort"); for(int i=0; i < index; i++) { System.out.println(age[i]); } } public static String removeBlanks(String inStr) { //System.out.println("In rB, string is *"+inStr+"*"); //String nStr = inStr.trim(); String nStr = inStr; //System.out.println("In rB, string after trim is *"+nStr+"*"); int cnt = 0; while (nStr.charAt(cnt) == ' ') { nStr = nStr.substring(1); } //System.out.println("In rB, string after remove front blanks is *"+nStr+"*"); while (nStr.charAt(nStr.length()-1) == ' ') { nStr = nStr.substring(0, nStr.length()-1); } //System.out.println("In rB, string after remove back blanks is *"+nStr+"*"); return nStr; } }