diff --git a/src/TextOutput.java b/src/TextOutput.java index 6e957eb..b409190 100644 --- a/src/TextOutput.java +++ b/src/TextOutput.java @@ -1,17 +1,29 @@ import java.util.ArrayList; +import java.util.Iterator; + public class TextOutput { private boolean formatRaw; private int columnWidth = 10; + /** + * Method which checks in which way the paragraphs should be displayed. And then + * + * @param text the ArrayList which is then formated into the desired output. + */ public void print(ArrayList text) { if (formatRaw) { printFormated(text); } else { - printUnformated(text); + printUnformatedV2(text); } } + /** + * Method to print out the paragraphs in numerical order and with the whole paragraph as its length. + * + * @param text the ArrayList which is used for the output + */ private void printFormated(ArrayList text) { for (int counter = 0; counter < text.size(); counter++) { System.out.println("<" + (counter + 1) + ">: <" + text.get(counter) + ">"); @@ -19,6 +31,12 @@ public class TextOutput { } + /** + * Method to print out the paragraphs with the length taken from columnWidth and adding leftover words to the next + * paragraph. + * + * @param text the ArrayList which is used for the output. + */ private void printUnformated(ArrayList text) { for (String paragraph : text) { String[] words = paragraph.split(" "); @@ -29,7 +47,6 @@ public class TextOutput { int letterLenght = letters.length; int lettersPrinted = 0; do { - //System.out.println(); currentLength = 0; for (int i = 0; i < columnWidth; i++) { if (letterLenght > 0) { @@ -57,20 +74,82 @@ public class TextOutput { System.out.println(); //added } } + private void printUnformatedV2(ArrayList text) { + for(String paragraph : text) { + if (paragraph.length() <= columnWidth) { + System.out.println(paragraph); + } + else { + String[] word = paragraph.split(" "); + int currentLineLength = 0; + for(String eachword : word) { + if (eachword.length() > columnWidth) { + String remainingText = eachword; + do { + if (remainingText.length() < columnWidth) { + System.out.println(remainingText); + break; + } + System.out.println(remainingText.substring(0, columnWidth)); + remainingText = remainingText.substring((columnWidth)); + } while (!(remainingText.length() == 0)); + } + else { + if (currentLineLength == 0) { + System.out.println(); + } + if (columnWidth > eachword.length()) { + System.out.print(eachword); + if (!(currentLineLength == columnWidth)) { + System.out.print(" "); + } + currentLineLength = currentLineLength + eachword.length(); + } + else { + System.out.println(eachword); + currentLineLength = eachword.length(); + if (!(currentLineLength == columnWidth)) { + System.out.print(" "); + } + } + + + } + + } + + } + } + } + /** + * Method which sets the Variable formatRaw to true. + */ public void formatRaw() { formatRaw = true; } + /** + * Method to set the formatRaw to false and also set the length of the desired paragraph length in order to limit + * the paragraph length when printing the text. + * + * @param length the maximum length of each paragraph that is allowed to be displayed when printing the text. + */ public void formatFix(int length) { formatRaw = false; columnWidth = length; } + /** + * Method to give out the Error "Invalid String". + */ public void errorInvalidString() { System.err.println("Invalid String"); } + /** + * Method to give out the Error "Invalid Command". + */ public void errorInvalidCommand() { System.err.println("Invalid Command"); } diff --git a/test/TextOutputTest.java b/test/TextOutputTest.java index 5996319..a06bb71 100644 --- a/test/TextOutputTest.java +++ b/test/TextOutputTest.java @@ -15,8 +15,8 @@ class TextOutputTest { text = new ArrayList<>(); text.add("123456789"); text.add("1234"); - text.add("12 12 12"); - text.add(" "); + text.add("12 12 12 12 12 12"); + text.add(" "); text.add("1eeeeeee8597389751"); text.add("TextTextTextTextTextTextTextTextTextTextTextTextTextText TextTextTextTextTextTextTextTextTextTextTextText TextTextText"); }