Write a Java program that will: There should now be three columns in the project
ID: 3678361 • Letter: W
Question
Write a Java program that will:
There should now be three columns in the project GUI: text from an unsorted array, text from a sorted array and text from a sorted linked list. When the program starts, the input file should be read into two arrays, and one of the arrays is then sorted as usual. Each time a word is read from the file, it is inserted in the linked list in the proper position to keep the list in sorted order. When all the words have been read, then the text areas are to be filled and displayed in the GUI.
Now your program can start accepting commands. A JOptionPane input dialog should pop up and say “Enter Command:”. The valid commands are ADD, DELETE, and STOP (upper or lower case). The command ADD should be followed by a space, and then a list of one or more words separated by commas. These words are to be added to the arrays and the linked list and displayed in the GUI. The command DELETE should be followed by a space and a single word to be deleted (again, the displays should be updated). Note that the word to be deleted might not be in the arrays or the list! The command STOP means stop the program.
Create a single Java Archive (JAR) file containing all the files you wrote for this project (e.g., Project2.java, Project2GUI.java, WordNode.java, WordList.java, etc.). See the instructions on Blackboard about using Eclipse to create a jar file. Upload that single jar file to Blackboard by midnight of the due date to receive full credit.
Explanation / Answer
package p1caccia.test;
import java.io.Serializable;
public class WordNode implements Serializable,Comparable<WordNode>{
private static final long serialVersionUID = 1L;
private String word;
public String getWord() {
return word;
}
public void setWord(String word) {
this.word = word;
}
public WordNode(String word) {
super();
this.word = word;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((word == null) ? 0 : word.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
WordNode other = (WordNode) obj;
if (word == null) {
if (other.word != null)
return false;
} else if (!word.equals(other.word))
return false;
return true;
}
@Override
public String toString() {
return word;
}
@Override
public int compareTo(WordNode o) {
return o.getWord().compareTo(this.getWord());
}
}
package p1caccia.test;
import java.util.ArrayList;
import java.util.List;
public class WordList {
List<WordNode> list = new ArrayList<WordNode>();
public List<WordNode> getList() {
return list;
}
public void setList(List<WordNode> list) {
this.list = list;
}
}
package p1caccia.test;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class Project2GUI {
WordNode[] wordNodes = null;
WordNode[] unSortedWordNodes = null;
WordList wordList = new WordList();
public static void main(String[] args) throws IOException {
JFrame mainFrame = new JFrame("Java Swing Examples");
mainFrame.setSize(400, 400);
mainFrame.setLayout(new GridLayout(3, 1));
mainFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
});
JTextArea list = new JTextArea();
JTextArea sorted = new JTextArea();
JTextArea unsorted = new JTextArea();
JPanel controlPanel = new JPanel();
controlPanel.setLayout(new FlowLayout());
mainFrame.add(list);
mainFrame.add(controlPanel);
mainFrame.add(sorted);
mainFrame.add(unsorted);
mainFrame.setVisible(true);
Project2GUI project = new Project2GUI();
@SuppressWarnings("resource")
BufferedReader br = new BufferedReader(
new FileReader("/home/raghunandangupta/mygit/tally/src/main/java/p1caccia/test/abc.txt"));
String line = br.readLine();
while (line != null) {
project.addList(new String[] { line });
project.addToArray(new String[] { line });
project.addUnsortedToArray(new String[] { line });
line = br.readLine();
}
list.setText("List : " + project.getList().toString());
sorted.setText("Sorted : " + Arrays.asList(project.getArray()).toString());
unsorted.setText("unsorted : " + Arrays.asList(project.getUnsortedArray()).toString());
int choice = 0;
while (choice != 7) {
choice = Integer
.parseInt(JOptionPane.showInputDialog("Please select your choice from these available options:"
+ " 1. ADD" + " 2. DELETE" + " Enter 3 to STOP"));
switch (choice) {
case 1:
String values = JOptionPane.showInputDialog("Enter values [ADD A,B,C]: ");
project.addList(values.split(" ")[1].split(","));
project.addToArray(values.split(" ")[1].split(","));
project.addUnsortedToArray(values.split(" ")[1].split(","));
list.setText("List : " + project.getList().toString());
sorted.setText("Sorted : " + Arrays.asList(project.getArray()).toString());
unsorted.setText("unsorted : " + Arrays.asList(project.getUnsortedArray()).toString());
break;
case 2:
values = JOptionPane.showInputDialog("Enter values [DELETE A]: ");
project.deleteFromList(values.split(" ")[1].split(",")[0]);
project.deleteFromArray(values.split(" ")[1].split(",")[0]);
project.deleteFromUnsortedArray(values.split(" ")[1].split(",")[0]);
list.setText("List : " + project.getList().toString());
sorted.setText("Sorted : " + Arrays.asList(project.getArray()).toString());
unsorted.setText("unsorted : " + Arrays.asList(project.getUnsortedArray()).toString());
break;
case 3:
System.exit(0);
}
}
}
/**
* List
*
* @param value
*/
public void addList(String value[]) {
if (value != null) {
for (String item : value) {
wordList.getList().add(new WordNode(item));
}
}
}
public List<WordNode> getList() {
wordList.getList().sort(Comparator.comparing(WordNode::getWord));
return wordList.getList();
}
public void deleteFromList(String value) {
WordNode wordNode = new WordNode(value);
wordList.getList().remove(wordNode);
}
/**
* Sorted Array
*
* @param value
*/
public void addToArray(String value[]) {
if (value != null) {
if (wordNodes == null) {
List<WordNode> tempList = new ArrayList<WordNode>();
for (String item : value) {
tempList.add(new WordNode(item));
}
wordNodes = new WordNode[tempList.size()];
tempList.toArray(wordNodes);
} else {
WordNode[] arr = new WordNode[wordNodes.length + value.length];
int i = 0;
while (i < wordNodes.length) {
arr[i] = wordNodes[i];
i++;
}
int j = 0;
while (j < value.length) {
arr[i] = new WordNode(value[j]);
i++;
j++;
}
wordNodes = arr;
}
}
}
public WordNode[] getArray() {
if (wordNodes != null) {
Arrays.sort(wordNodes);
}
return wordNodes;
}
public void deleteFromArray(String value) {
int count = 0;
if (wordNodes != null && value != null) {
for (int i=0;i<wordNodes.length;i++) {
if (wordNodes[i].getWord().equals(value)) {
count++;
wordNodes[i] = null;
}
}
WordNode[] arr = new WordNode[wordNodes.length - count];
int i = 0;
int j = 0;
while (i < arr.length) {
if(wordNodes[j] != null){
arr[i] = wordNodes[j];
i++;
}
j++;
}
wordNodes = arr;
}
}
/**
* For unsorted
*
* @param value
*/
public void addUnsortedToArray(String value[]) {
if (value != null) {
if (unSortedWordNodes == null) {
List<WordNode> tempList = new ArrayList<WordNode>();
for (String item : value) {
tempList.add(new WordNode(item));
}
unSortedWordNodes = new WordNode[tempList.size()];
tempList.toArray(unSortedWordNodes);
} else {
WordNode[] arr = new WordNode[unSortedWordNodes.length + value.length];
int i = 0;
while (i < unSortedWordNodes.length) {
arr[i] = unSortedWordNodes[i];
i++;
}
int j = 0;
while (j < value.length) {
arr[i] = new WordNode(value[j]);
i++;
j++;
}
unSortedWordNodes = arr;
}
}
}
public WordNode[] getUnsortedArray() {
return unSortedWordNodes;
}
public void deleteFromUnsortedArray(String value) {
int count = 0;
if (unSortedWordNodes != null && value != null) {
for (int i=0;i<unSortedWordNodes.length;i++) {
if (unSortedWordNodes[i].getWord().equals(value)) {
count++;
unSortedWordNodes[i] = null;
}
}
WordNode[] arr = new WordNode[unSortedWordNodes.length - count];
int i = 0;
int j = 0;
while (i < arr.length) {
if(unSortedWordNodes[j] != null){
arr[i] = unSortedWordNodes[j];
i++;
}
j++;
}
unSortedWordNodes = arr;
}
}
}
abc.txt
Acyclovir
aerosols
Let me know in case of issues.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.