In: Computer Science
simple Java project// please explain every statement with reasoning. Thank you 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. You should have two files to submit for this project: Project1.java WordGUI.java
ANSWER:
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;
}
}
If you do not get anything in this solution,please put a comment and i will help you out.
Do not give a downvote instantly.It is a humble request.
If you like my answer,please give an upvote.....Thank you.