From 5f362ddcd223f6835bd883a66040782bef1948df Mon Sep 17 00:00:00 2001 From: Nick Nilson Date: Wed, 29 Jun 2022 09:46:42 -0400 Subject: [PATCH 01/13] Acronym & Factorial written & tested --- src/main/java/LoopFun.java | 31 ++++++++++++++++++++++---- src/test/java/LoopsFunAcronymTest.java | 4 ++++ 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/main/java/LoopFun.java b/src/main/java/LoopFun.java index 801ab56..7cc7c03 100644 --- a/src/main/java/LoopFun.java +++ b/src/main/java/LoopFun.java @@ -1,4 +1,4 @@ - +import java.util.Arrays; public class LoopFun { @@ -10,7 +10,11 @@ public class LoopFun * @return the factorial of the number */ public Integer factorial(Integer number){ - return null; + Integer factorialResult = 1; + for (int i = 1; i <= number; i++) { + factorialResult = factorialResult * i; + } + return factorialResult; } /** @@ -21,7 +25,15 @@ public Integer factorial(Integer number){ * @return Upper case string of the first letter of each word */ public String acronym(String phrase) { - return null; + StringBuilder acronym = new StringBuilder(); + String input = phrase; + input = input.toUpperCase(); + String[] phraseArray = input.split(" "); + for (int i = 0; i < phraseArray.length; i++) { + acronym.append(phraseArray[i].charAt(0)); + } + String result = acronym.toString(); + return result; } /** @@ -37,6 +49,17 @@ public String acronym(String phrase) { * @return the encrypted string by shifting each character by three character */ public String encrypt(String word) { - return null; + char[] lettersToChange = new char[word.length()]; + char currentLetter; + for (int i = 0; i Date: Wed, 29 Jun 2022 09:54:33 -0400 Subject: [PATCH 02/13] half & odd written & tested --- src/main/java/MathUtilities.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/MathUtilities.java b/src/main/java/MathUtilities.java index e067c75..5b2900e 100644 --- a/src/main/java/MathUtilities.java +++ b/src/main/java/MathUtilities.java @@ -9,7 +9,7 @@ public class MathUtilities{ * @return the sum of the two numbers */ public Integer add(Integer baseValue, Integer valueToAdd){ - return null; + return baseValue + valueToAdd; } /** @@ -19,7 +19,7 @@ public Integer add(Integer baseValue, Integer valueToAdd){ * @return the sum of the two numbers */ public Double add(Double baseValue, Double valueToAdd){ - return null; + return baseValue + valueToAdd; } /** @@ -28,7 +28,7 @@ public Double add(Double baseValue, Double valueToAdd){ * @return the half of the number in double */ public Double half(Integer number) { - return null; + return (number / 2.0); } /** @@ -37,7 +37,7 @@ public Double half(Integer number) { * @return true if the number is odd, false if it is even */ public Boolean isOdd(Integer number){ - return null; + return number % 2 != 0; } From a5d0d62d528f1dd6904a3388221457c408f0414f Mon Sep 17 00:00:00 2001 From: Nick Nilson Date: Wed, 29 Jun 2022 10:00:41 -0400 Subject: [PATCH 03/13] concat & return methods written + tested --- src/main/java/MathUtilities.java | 2 +- src/main/java/StringUtilities.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/MathUtilities.java b/src/main/java/MathUtilities.java index 5b2900e..cdbeeae 100644 --- a/src/main/java/MathUtilities.java +++ b/src/main/java/MathUtilities.java @@ -47,7 +47,7 @@ public Boolean isOdd(Integer number){ * @return the result of the number multiply by itself */ public Integer square(Integer number) { - return null; + return number * number; } } diff --git a/src/main/java/StringUtilities.java b/src/main/java/StringUtilities.java index e3ea8a9..2a37d45 100644 --- a/src/main/java/StringUtilities.java +++ b/src/main/java/StringUtilities.java @@ -5,7 +5,7 @@ public class StringUtilities { * @return `input` */ public String returnInput(String input) { - return null; + return input; } /** @@ -14,7 +14,8 @@ public String returnInput(String input) { * @return the concatenation of `baseValue` and `valueToBeAdded` */ public String concatenate(String baseValue, String valueToBeAdded) { - return null; + String concatenatedString = baseValue + valueToBeAdded; + return concatenatedString; } /** From 80b77e5c967383fc8909f713c80c3c547ec935aa Mon Sep 17 00:00:00 2001 From: Nick Nilson Date: Wed, 29 Jun 2022 10:04:17 -0400 Subject: [PATCH 04/13] reverse written & tested --- src/main/java/StringUtilities.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/StringUtilities.java b/src/main/java/StringUtilities.java index 2a37d45..70330a7 100644 --- a/src/main/java/StringUtilities.java +++ b/src/main/java/StringUtilities.java @@ -23,7 +23,12 @@ public String concatenate(String baseValue, String valueToBeAdded) { * @return identical string with characters in opposite order */ public String reverse(String valueToBeReversed) { - return null; + StringBuilder reverser = new StringBuilder(); + for (int i = valueToBeReversed.length() -1; i >= 0; i--) { + reverser.append(valueToBeReversed.charAt(i)); + } + String result = reverser.toString(); + return result; } /** From 84eaac30b8a99d6f505f23deccaf7d748c5ec751 Mon Sep 17 00:00:00 2001 From: Nick Nilson Date: Wed, 29 Jun 2022 10:07:56 -0400 Subject: [PATCH 05/13] middle character written & tested, needs exception handle for words w/ even # of characters --- src/main/java/StringUtilities.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/StringUtilities.java b/src/main/java/StringUtilities.java index 70330a7..ea7df14 100644 --- a/src/main/java/StringUtilities.java +++ b/src/main/java/StringUtilities.java @@ -36,7 +36,9 @@ public String reverse(String valueToBeReversed) { * @return middle character of `word` */ public Character getMiddleCharacter(String word) { - return null; + int characterIndexToRetrieve = word.length() / 2; + Character result = word.charAt(characterIndexToRetrieve); + return result; } /** From a0a82aee7a9fcc6fa2c8808d830ee1fde150a5b9 Mon Sep 17 00:00:00 2001 From: Nick Nilson Date: Wed, 29 Jun 2022 10:12:10 -0400 Subject: [PATCH 06/13] character to remove written & tested --- src/main/java/StringUtilities.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/StringUtilities.java b/src/main/java/StringUtilities.java index ea7df14..73963e2 100644 --- a/src/main/java/StringUtilities.java +++ b/src/main/java/StringUtilities.java @@ -47,7 +47,7 @@ public Character getMiddleCharacter(String word) { * @return `value` with char of value `charToRemove` removed */ public String removeCharacter(String value, Character charToRemove) { - return null; + return value.replaceAll(charToRemove.toString(), ""); } /** From 2bef60a9b623acb8b3a5102829699fe600e9031f Mon Sep 17 00:00:00 2001 From: Nick Nilson Date: Wed, 29 Jun 2022 10:55:10 -0400 Subject: [PATCH 07/13] working through encryption method --- src/main/java/LoopFun.java | 41 +++++++++++++++---- src/main/java/StringUtilities.java | 13 +++++- src/test/java/StringUtilsGetLastWordTest.java | 4 +- 3 files changed, 46 insertions(+), 12 deletions(-) diff --git a/src/main/java/LoopFun.java b/src/main/java/LoopFun.java index 7cc7c03..1a44bab 100644 --- a/src/main/java/LoopFun.java +++ b/src/main/java/LoopFun.java @@ -49,17 +49,40 @@ public String acronym(String phrase) { * @return the encrypted string by shifting each character by three character */ public String encrypt(String word) { - char[] lettersToChange = new char[word.length()]; - char currentLetter; - for (int i = 0; i = 33) { + int encryptedValue = (word.charAt(i) - 23); + charArray[i] = (char)encryptedValue; + } + int encryptedValue = (word.charAt(i) + 3); + charArray[i] = (char)encryptedValue; } - String encryptedWord = lettersToChange.toString(); + String encryptedWord = String.valueOf(charArray); return encryptedWord; + +// int[] valueOfChars = new int[word.length()]; +// System.out.println(valueOfChars); +// for (int i = 0; i < word.length(); i++) { +// valueOfChars[i] = word.charAt(i) + 3; +// } +// System.out.println(valueOfChars); +// return null; + + //first attempt -_- +// char[] lettersToChange = new char[word.length()]; +// char currentLetter; +// for (int i = 0; i Date: Wed, 29 Jun 2022 10:57:39 -0400 Subject: [PATCH 08/13] encrypted method written & tested --- src/main/java/LoopFun.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/LoopFun.java b/src/main/java/LoopFun.java index 1a44bab..dba6c4b 100644 --- a/src/main/java/LoopFun.java +++ b/src/main/java/LoopFun.java @@ -52,17 +52,18 @@ public String encrypt(String word) { char[] charArray = new char[word.length()]; for (int i = 0; i < word.length(); i++) { int numberValueOfCurrentChar = java.lang.Character.getNumericValue(word.charAt(i)); - System.out.println(numberValueOfCurrentChar); if (numberValueOfCurrentChar >= 33) { int encryptedValue = (word.charAt(i) - 23); - charArray[i] = (char)encryptedValue; + charArray[i] = (char) encryptedValue; + } else { + int encryptedValue = (word.charAt(i) + 3); + charArray[i] = (char) encryptedValue; } - int encryptedValue = (word.charAt(i) + 3); - charArray[i] = (char)encryptedValue; } - String encryptedWord = String.valueOf(charArray); - return encryptedWord; + String encryptedWord = String.valueOf(charArray); + return encryptedWord; + //second attempt // int[] valueOfChars = new int[word.length()]; // System.out.println(valueOfChars); // for (int i = 0; i < word.length(); i++) { @@ -71,7 +72,7 @@ public String encrypt(String word) { // System.out.println(valueOfChars); // return null; - //first attempt -_- + //first attempt -_- // char[] lettersToChange = new char[word.length()]; // char currentLetter; // for (int i = 0; i Date: Wed, 29 Jun 2022 11:19:44 -0400 Subject: [PATCH 09/13] getmiddlecharacter exception written for words w/ even # of letters --- src/main/java/LoopFun.java | 11 +++++++++++ src/main/java/StringUtilities.java | 3 +++ src/test/java/LoopFunEncryptTest.java | 13 +++++++++++++ .../java/StringUtilsGetMiddleCharacterTest.java | 14 ++++++++++++++ 4 files changed, 41 insertions(+) diff --git a/src/main/java/LoopFun.java b/src/main/java/LoopFun.java index dba6c4b..eaccb08 100644 --- a/src/main/java/LoopFun.java +++ b/src/main/java/LoopFun.java @@ -49,7 +49,18 @@ public String acronym(String phrase) { * @return the encrypted string by shifting each character by three character */ public String encrypt(String word) { + //this code doesn't check for letters, and can encrypt special characters... + //Not the best implementation, but now the method only accepts strings composed of letters. How it re-enters input + //would have to be considered where the method is called. + for (int j = 0; j < word.length(); j++) { + if (!Character.isLetter(word.charAt(j))) { + return "Please only enter letters"; + } + } + + //The actual, used code. The numeric values of the letters weren't matching unicode... I've got to find java's numeric values. char[] charArray = new char[word.length()]; + for (int i = 0; i < word.length(); i++) { int numberValueOfCurrentChar = java.lang.Character.getNumericValue(word.charAt(i)); if (numberValueOfCurrentChar >= 33) { diff --git a/src/main/java/StringUtilities.java b/src/main/java/StringUtilities.java index 8679d2c..6054ba9 100644 --- a/src/main/java/StringUtilities.java +++ b/src/main/java/StringUtilities.java @@ -36,6 +36,9 @@ public String reverse(String valueToBeReversed) { * @return middle character of `word` */ public Character getMiddleCharacter(String word) { + if (word.length() % 2 == 0) { + throw new IllegalArgumentException("Word must contain odd number of letters"); + } int characterIndexToRetrieve = word.length() / 2; Character result = word.charAt(characterIndexToRetrieve); return result; diff --git a/src/test/java/LoopFunEncryptTest.java b/src/test/java/LoopFunEncryptTest.java index 492f1dd..29e8513 100644 --- a/src/test/java/LoopFunEncryptTest.java +++ b/src/test/java/LoopFunEncryptTest.java @@ -41,4 +41,17 @@ public void testEncryptWithTheLastLetters() { //Then assertEquals(expected, actual); } + +// @Test +// public void testEncryptNoSpecialCharacters() { +// //Given +// String word = "quiz1!@#"; +// String expected = "Please only enter letters"; +// +// //When +// String actual = loop.encrypt(word); +// +// //Then +// assertEquals(expected, actual); +// } } diff --git a/src/test/java/StringUtilsGetMiddleCharacterTest.java b/src/test/java/StringUtilsGetMiddleCharacterTest.java index 5447b19..359ac78 100644 --- a/src/test/java/StringUtilsGetMiddleCharacterTest.java +++ b/src/test/java/StringUtilsGetMiddleCharacterTest.java @@ -66,4 +66,18 @@ public void test4(){ //Then assertEquals(expected, actual); } + + //I don't think I did the exception correctly. +// @Test(expected = Exception.class) +// public void testStringWithEvenNoOfCharacters() { +// //Given +// String word = "pooppoop"; +// String expected = "Word must contain odd number of letters"; +// +// //When +// char actual = utilities.getMiddleCharacter(word); +// //Then +// assertEquals(expected, actual); +// +// } } From 6ac95ae413d5dcea0aed70a34e035d7b6dbd8069 Mon Sep 17 00:00:00 2001 From: Nick Nilson Date: Wed, 29 Jun 2022 11:24:58 -0400 Subject: [PATCH 10/13] added Test Suite --- src/test/java/TestSuite.java | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/test/java/TestSuite.java diff --git a/src/test/java/TestSuite.java b/src/test/java/TestSuite.java new file mode 100644 index 0000000..b0b6aa5 --- /dev/null +++ b/src/test/java/TestSuite.java @@ -0,0 +1,24 @@ + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +@RunWith(Suite.class) + +@Suite.SuiteClasses({ + LoopFunEncryptTest.class, + LoopFunFactorialTest.class, + LoopsFunAcronymTest.class, + MathUtilitiesAddTest.class, + MathUtilitiesHalfTest.class, + MathUtilitiesIsOddTest.class, + MathUtilitiesSquareTest.class, + StringUtilsConcatenateTest.class, + StringUtilsGetLastWordTest.class, + StringUtilsGetMiddleCharacterTest.class, + StringUtilsRemoveCharacterTest.class, + StringUtilsReturnInputTest.class, + StringUtilsReverseTest.class, +}) + +public class TestSuite { +} From faea2aa48b602c808a8ce8619b3282f2bbf4ba48 Mon Sep 17 00:00:00 2001 From: Nick Nilson Date: Wed, 29 Jun 2022 11:32:06 -0400 Subject: [PATCH 11/13] last checks, spelling & checking instructions --- src/main/java/LoopFun.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/LoopFun.java b/src/main/java/LoopFun.java index eaccb08..6a420ef 100644 --- a/src/main/java/LoopFun.java +++ b/src/main/java/LoopFun.java @@ -57,7 +57,6 @@ public String encrypt(String word) { return "Please only enter letters"; } } - //The actual, used code. The numeric values of the letters weren't matching unicode... I've got to find java's numeric values. char[] charArray = new char[word.length()]; From abd34fec4ffb0ee6afaa546a118d9fd3171fe28a Mon Sep 17 00:00:00 2001 From: Nick Nilson Date: Thu, 30 Jun 2022 14:48:02 -0400 Subject: [PATCH 12/13] added alternative solutions during review --- src/main/java/StringUtilities.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/StringUtilities.java b/src/main/java/StringUtilities.java index 6054ba9..77075bc 100644 --- a/src/main/java/StringUtilities.java +++ b/src/main/java/StringUtilities.java @@ -29,6 +29,8 @@ public String reverse(String valueToBeReversed) { } String result = reverser.toString(); return result; + + // return new StringBuilder(valueToBeReversed).reverse().toString(); // a one line solution. } /** @@ -42,6 +44,8 @@ public Character getMiddleCharacter(String word) { int characterIndexToRetrieve = word.length() / 2; Character result = word.charAt(characterIndexToRetrieve); return result; + + //return word.charAt(word.length()/2); // one line solution that does the same thing. } /** @@ -70,5 +74,12 @@ public String getLastWord(String sentence) { //this works but I don't like it. It meets the test cases, but still includes punctuation. may update method & test cases. String[] input = sentence.split(" "); return input[input.length -1]; + + //or + //ArrayList inputSentence = new ArrayList<>(sentence.split("")); + //return inputSentence.get(inputSentence.size()-1; + +// or + //could have also used a variable to spot the last space, store that index position. then use that with input.substring(); } } From f54c877d35d434e729eb071fcc54b9266a138d0a Mon Sep 17 00:00:00 2001 From: Nick Nilson Date: Thu, 30 Jun 2022 15:15:46 -0400 Subject: [PATCH 13/13] final additions from quiz review --- src/main/java/LoopFun.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/LoopFun.java b/src/main/java/LoopFun.java index 6a420ef..cb77820 100644 --- a/src/main/java/LoopFun.java +++ b/src/main/java/LoopFun.java @@ -15,6 +15,9 @@ public Integer factorial(Integer number){ factorialResult = factorialResult * i; } return factorialResult; + + //ternary operator would've worked too + //return (number ==1) || (number == 0) ? 1 : number * factorial(number -1); } /** @@ -34,6 +37,14 @@ public String acronym(String phrase) { } String result = acronym.toString(); return result; + + /*String [] sentence = phrase.split(" "); + String result = ""; + for (String s : sentence) { + result = result + s.charAt(0); + } + return result.toUpperCase(); + */ } /**