-
Notifications
You must be signed in to change notification settings - Fork 0
/
Word_Processor.java
38 lines (31 loc) · 1.84 KB
/
Word_Processor.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.io.*;
import java.util.*;
public class Word_Processor {
public static void main(String[] args) throws IOException {
Scanner input = new Scanner(new FileReader("word.in"));
PrintWriter print = new PrintWriter(new BufferedWriter(new FileWriter("word.out")));
String[] s = input.nextLine().split(" "); //Store all the inputs in an array
int N = Integer.parseInt(s[0]);
int K = Integer.parseInt(s[1]);
String[] X = input.nextLine().split(" " );
int sumLengths = 0;
int iterations = 0;
for (int i = 0; i < N; i++) {
sumLengths += X[i].length(); //Add together the length of each index of the array.
iterations += 1;
if (sumLengths <= K && iterations == 1) { //If the length is <= K, and it is the first word in the line, print the word but replace the space at the beginning with nothing.
String printing = " " + X[i];
print.print(printing.replaceFirst(" ", "" ));
}else if(sumLengths > K){ //If the sum of the lengths is greater than K, than reset the sumLengths variable to 0, go to a new line, decrement i by 1
sumLengths = 0; //If you dont decrement i by 1 it wont print the word that made it go over K.
print.println(""); //Set iterations to 0, so you can print the first word in that line without a space again.
i = i - 1;
iterations = 0;
}else if(sumLengths <=K && iterations != 1){ //If the sum of the lengths is <= K, but the iterations is no equal to 1, meaning it is not the first word in the line,
String printing = " " + X[i]; //print it with a space before
print.print(printing);
}
}
print.close();
}
}