diff --git a/src/main/java/io/zipcoder/ParenChecker.java b/src/main/java/io/zipcoder/ParenChecker.java index caee675..032481d 100644 --- a/src/main/java/io/zipcoder/ParenChecker.java +++ b/src/main/java/io/zipcoder/ParenChecker.java @@ -1,4 +1,42 @@ package io.zipcoder; +import java.util.Stack; + public class ParenChecker { + + public static boolean parenChecker(String aString){ + Stack myStack = new Stack(); + for(int i=0;i myStack = new Stack(); + for (int i = 0; i < aString.length(); i++) { + if (aString.charAt(i) == '(' || aString.charAt(i) == '{' || aString.charAt(i) == '[' || aString.charAt(i) == '<' + || aString.charAt(i) == '"' || aString.charAt(i) == '\'') { + myStack.push(aString.charAt(i)); + } + if ((aString.charAt(i) == ')' || aString.charAt(i) == '}' || aString.charAt(i) == ']' || aString.charAt(i) == '>') + &&myStack.isEmpty()) { + return false; + } + if (aString.charAt(i) == ')' && myStack.peek() == '(' || aString.charAt(i) == '}' && myStack.peek() == '{' || + aString.charAt(i) == ']' && myStack.peek() == '[' || aString.charAt(i) == '>' && myStack.peek() == '<' || + aString.charAt(i) == '"' && myStack.peek() == '"' || aString.charAt(i) == '\'' && myStack.peek() == '\'') { + + myStack.pop(); + } + + } + return myStack.isEmpty(); + } + } diff --git a/src/main/java/io/zipcoder/WC.java b/src/main/java/io/zipcoder/WC.java index babb68c..cf97f03 100644 --- a/src/main/java/io/zipcoder/WC.java +++ b/src/main/java/io/zipcoder/WC.java @@ -2,11 +2,11 @@ import java.io.FileNotFoundException; import java.io.FileReader; -import java.util.Iterator; -import java.util.Scanner; +import java.util.*; public class WC { private Iterator si; + private Map wordsInFile=new TreeMap(Collections.reverseOrder()); public WC(String fileName) { try { @@ -20,4 +20,35 @@ public WC(String fileName) { public WC(Iterator si) { this.si = si; } + + public Map readWords(){ + + while(si.hasNext()) { + String aWord = si.next().toLowerCase().replaceAll("[^a-z]",""); + if (wordsInFile.containsKey(aWord)) { + wordsInFile.put(aWord, wordsInFile.get(aWord)+1); + } else + wordsInFile.put(aWord,1); + } + return wordsInFile; + } + + public String printWords(){ + readWords(); + StringBuilder builder = new StringBuilder(); + builder.append(String.format("%15s%15s\n","Words","Count")); + for(String key: wordsInFile.keySet()){ + builder.append(String.format("%15s%15d\n", key,wordsInFile.get(key))); + } + System.out.println(builder.toString()); + return builder.toString(); + } + + public static void main(String[]args){ + WC wordCount = new WC("src/main/resources/someTextFile.txt"); + wordCount.printWords(); + } + + + } diff --git a/src/main/resources/someTextFile.txt b/src/main/resources/someTextFile.txt index e69de29..2bfec70 100644 --- a/src/main/resources/someTextFile.txt +++ b/src/main/resources/someTextFile.txt @@ -0,0 +1 @@ +kibret Gio Erik Joshua Joe Vince kibret kibret kibret Joshua joe. \ No newline at end of file diff --git a/src/test/java/io/zipcoder/ParenCheckerTest.java b/src/test/java/io/zipcoder/ParenCheckerTest.java index 76aa3b6..f554550 100644 --- a/src/test/java/io/zipcoder/ParenCheckerTest.java +++ b/src/test/java/io/zipcoder/ParenCheckerTest.java @@ -5,4 +5,42 @@ public class ParenCheckerTest { + @Test + public void testParenChecker1(){ + boolean actual = ParenChecker.parenChecker("("); + Assert.assertFalse(actual); + } + + @Test + public void testPareChecker2(){ + boolean actual = ParenChecker.parenChecker("ahfas(;fjjljl)hdhjfj777(kjjg)dfkj"); + Assert.assertTrue(actual); + } + + @Test + public void testPareChecker3(){ + boolean actual = ParenChecker.parenChecker(")haddhjk(jkl(lkdja)"); + Assert.assertFalse(actual); + } + @Test + public void testParenChecker4(){ + boolean actual = ParenChecker.parenChecker("))))))))))ajhdfdha;(((9"); + Assert.assertFalse(actual); + } + @Test + public void testParenChecker5(){ + boolean actual = ParenChecker.parenChecker("eyioewncnv(((hgajdhak)adnkjf)euei)"); + Assert.assertTrue(actual); + } + @Test + public void testCheckMatchingCharacters1(){ + boolean actual = ParenChecker.checkMatchingCharacters("{}<>"); + Assert.assertTrue(actual); + } + @Test + public void testCheckMatchingCharacters2(){ + boolean actual = ParenChecker.checkMatchingCharacters(">{}()<"); + Assert.assertFalse(actual); + } + } \ No newline at end of file diff --git a/src/test/java/io/zipcoder/WCTest.java b/src/test/java/io/zipcoder/WCTest.java index 895e831..19bb780 100644 --- a/src/test/java/io/zipcoder/WCTest.java +++ b/src/test/java/io/zipcoder/WCTest.java @@ -3,9 +3,38 @@ import org.junit.Assert; import org.junit.Test; -import java.util.ArrayList; -import java.util.Arrays; +import java.util.*; public class WCTest { + @Test + public void testReadFile(){ + WC test = new WC("src/main/resources/someTextFile.txt"); + Map expected = new TreeMap(Collections.reverseOrder()); + + expected.put("kibret",4); + expected.put("Vince",1); + expected.put("joshua",2); + expected.put("joe",2); + expected.put("gio",1); + expected.put("eric",1); + + Mapactual = test.readWords(); + Assert.assertEquals(expected,actual); + + } +@Test + public void testPrintWords(){ + WC test = new WC("src/main/resources/someTextFile.txt"); + String expected = + " Words Count\n" + + " vince 1\n" + + " kibret 4\n" + + " joshua 2\n" + + " joe 2\n" + + " gio 1\n" + + " erik 1\n"; + String actual = test.printWords(); + Assert.assertEquals(expected,actual); +} } \ No newline at end of file