The program below should do this:
When the user input: The quick brown fox. Jumps over. The lazy dog.
It should output: God yzal eth. Revo spmuj. Xof nworb kciuq eht.
But instead when the user input: The quick brown fox. Jumps over. The lazy dog.
It outputs: xof nworb kciuq ehT. revo spmuJ . god yzal ehT .
So here's my code:
import java.util.*;
public class Reverse {
public static void main( String args[] ) {
String paragraph;
Scanner input = new Scanner (System.in);
System.out.print("Enter a paragraph: ");
paragraph = input.nextLine();
paragraph = paragraph.trim();
StringTokenizer tokens = new StringTokenizer(paragraph, ".");
while (tokens.hasMoreTokens()){
String ss = tokens.nextToken();
for (int i = ss.length() - 1; i>=0; i--) {
System.out.print(ss.charAt(i));
}
System.out.print(". ");
}
System.out.println();
}
}
I also thought of this:
import java.util.*;
public class Reverse{
public static void main(String[] args) {
String paragraph;
Scanner input = new Scanner (System.in);
System.out.print("Enter a paragraph: ");
paragraph = input.nextLine();
paragraph = paragraph.trim();
StringTokenizer parWordTokenizer = null;
StringTokenizer parDotTokenizer = null;
int numParDotTokens = 0;
int numParWordTokens = 0;
parDotTokenizer = new StringTokenizer (paragraph, ".");
parWordTokenizer = new StringTokenizer (paragraph);
numParDotTokens = parDotTokenizer.countTokens();
numParWordTokens = parWordTokenizer.countTokens();
String[] sentences = new String[numParDotTokens];
String[] words = new String[numParWordTokens];
String[] characters = new String[5];
for (int i=0; i<numParDotTokens; i++) {
sentences[i] = parDotTokenizer.nextToken();
System.out.print("S: "+sentences[i]+"\n");
parWordTokenizer = new StringTokenizer (sentences[i]);
numParWordTokens = parWordTokenizer.countTokens();
while (parDotTokenizer.hasMoreTokens()){
String ss = parDotTokenizer.nextToken();
for (int k = ss.length() - 1; k>=0; k--) {
System.out.print(ss.charAt(k));
}
System.out.print(". ");
}
for (int j=0; j<numParWordTokens; j++) {
words[j] = parWordTokenizer.nextToken();
System.out.print("W: "+words[j]+"\n");
while (parWordTokenizer.hasMoreTokens()){
String ss = parWordTokenizer.nextToken();
for (int k = ss.length() - 1; k>=0; k--) {
System.out.print(ss.charAt(k));
}
System.out.print(". ");
}
}
}
} }
but revo spmuJ . god yzal ehT . kciuq. nworb. xof. Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(Unknown Source)
at ScrambleParagraph.main(Reverse.java:40)
Please help me fix it. I've been thinking the correct implementation for a couple of days but I'm new in Java so I can't really do far, at least for now. Thank you very much!