In: Computer Science
Read from a file that contains a paragraph of words. Put all the
words in an array, put the valid words (words that have only
letters) in a second array, and put the invalid words in a third
array. Sort the array of valid words using Selection Sort. Create a
GUI to display the arrays using a GridLayout with one row and three
columns.
The input file
Each line of the input file will contain a sentence with words
separated by one space. Read a line from the file and use a
StringTokenizer to extract the words from the line.
An example of the input file would be:
Mary had a little lamb whose fl33ce was white as sn0w And everywhere that @Mary went the 1amb was sure to go.
Submitting the Project.
You should have two files to submit for this project:
Project1.java
WordGUI.java
PLEASE GIVE IT A THUMBS UP, I SERIOUSLY NEED ONE, IF YOU NEED ANY MODIFICATION THEN LET ME KNOW, I WILL DO IT FOR YOU
Output:
input.txt
Mary had a little lamb whose fl33ce was white as sn0w And everywhere that @Mary went the 1amb was sure to go.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Project.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
class Project1 {
public static void main(String args[]) {
File file = null;
FileReader fr = null;
BufferedReader br = null;
String line;
StringTokenizer st = null;
int numberOfWordsInFile;
String words[];
int index;
String validWords[];
int validWordsIndex;
String invalidWords[];
int invalidWordsIndex;
try {
file = new File("input.txt");
fr = new FileReader(file);
br = new BufferedReader(fr);
numberOfWordsInFile = 22;
words = new String[numberOfWordsInFile];
index = 0;
while ((line = br.readLine()) != null) {
st = new StringTokenizer(line);
while (st.hasMoreElements()) {
words[index] = (String) st.nextElement();
index++;
}
}
fr.close();
validWords = new String[numberOfWordsInFile];
validWordsIndex = 0;
invalidWords = new String[numberOfWordsInFile];
invalidWordsIndex = 0;
for (int i = 0; i < words.length; i++) if (
(!words[i].equals("")) &&
(words[i] != null) &&
(words[i].matches("^[a-zA-Z]*$"))
) {
validWords[validWordsIndex] = words[i];
validWordsIndex++;
} else {
invalidWords[invalidWordsIndex] = words[i];
invalidWordsIndex++;
}
selectionSort(validWords, validWordsIndex);
WordGUI wg = new WordGUI();
wg.display(
words,
index,
validWords,
validWordsIndex,
invalidWords,
invalidWordsIndex
);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
static String[] selectionSort(String[] validWords, int validWordsIndex) {
for (int i = 0; i < validWordsIndex - 1; i++) {
int min_index = i;
String minStr = validWords[i];
for (int j = i + 1; j < validWordsIndex; j++) {
if (validWords[j].compareTo(minStr) < 0) {
minStr = validWords[j];
min_index = j;
}
}
if (min_index != i) {
String temp = validWords[min_index];
validWords[min_index] = validWords[i];
validWords[i] = temp;
}
}
return validWords;
}
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
WordGUI.java
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
class WordGUI {
public void display(
String[] words,
int index,
String[] validWords,
int validWordsIndex,
String[] invalidWords,
int invalidWordsIndex
) {
JFrame f = new JFrame();
f.setLayout(new GridLayout(1, 3));
String label = "";
label = convertArrayToLabel(words, index);
f.add(new JLabel(label));
label = convertArrayToLabel(validWords, validWordsIndex);
f.add(new JLabel(label));
label = convertArrayToLabel(invalidWords, invalidWordsIndex);
f.add(new JLabel(label));
f.setSize(1000, 1000);
f.setVisible(true);
}
public String convertArrayToLabel(String[] array, int maxIndex) {
String label = "<html>";
for (int i = 0; i < maxIndex; i++) {
label = label + array[i] + "<br/>";
}
label = label + "</html>";
return label;
}
}