The below codes add, display, sort and filter user inputed items such as flowers
ID: 3833775 • Letter: T
Question
The below codes add, display, sort and filter user inputed items such as flowers, weeds,herbs and fungus. The question below will be highlighted in bold where the existing code needs altered.
Using our existing flower pack we must add the following feature:
cal user interface implemented. This GUI MUST be unique but can be the same as you've previously used.
Using recursion (no loops!) you must count the number of times a specific character, or set of characters appears in the name of each plant in your pack. We will call this 'analyzing' for the sake of future terminology. Examples are provided on the last page.
The following features are also required
You must have a graphical user interface implemented. This GUI MUST be unique
You must be able to display, add, remove, sort, filter, and now analyze information from our flower pack.
The flower pack should hold flowers, weeds, fungus, and herbs. All should be a subclass of a plant class.
Each subclass shares certain qualities (ID, Name, and Color) – in plant class
Flower traits include (Thorns and Smell)
Fungus traits include (Poisonous)
Weed traits include (Poisonous, Edible and Medicinal)
Herb traits include (Flavor, Medicinal, Seasonal)
Analysis Examples
how you display the results is up to you
Analyze 3 different strings such as “ar”, “ne”, and “um” – which strings is up to you and does not require user input
Analysis can be case sensitive, if you so desire. Remember - you MUST use recursion to solve this problem. Meaning – not a single loop should be called when doing these calculations. You CAN use a loop when you want to move from analyzing one flower to the next, but your loop CANNOT be used when analyzing a specific flower.
=========================================
Main code
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class Final {
public static void main(String[] args) {
try {
List flowerPack = new LinkedList<>();
Scanner input = new Scanner(System.in);
int choice;
String name, color, ID;
boolean poisonous, edible, medicinal, smell, thorns, flavor, seasonal;
while (true) {
System.out.println(" 1. Add plants");
System.out.println("2. Remove plants");
System.out.println("3. Search plants");
System.out.println("4. Filter plants");
System.out.println("5. Save plants to file");
System.out.println("6. Load plants from file");
System.out.println("7. Quit");
System.out.print("Enter your choice: ");
choice = input.nextInt();
switch (choice) {
case 1:
input.nextLine();
System.out.print("You want to add Flower, Fungus, Herb or Weed? ");
String type = input.nextLine();
if (type.equalsIgnoreCase("Flower")) {
System.out.print("Enter name : ");
name = input.nextLine();
System.out.print("Enter ID : ");
ID = input.nextLine();
System.out.print("Enter color : ");
color = input.nextLine();
System.out.print("Has thorns? ");
thorns = input.hasNextBoolean();
input.nextLine();
System.out.print("Has smell? ");
smell = input.hasNextBoolean();
input.nextLine();
flowerPack.add(new Flower(name, ID, color, thorns, smell));
} else if (type.equalsIgnoreCase("Fungus")) {
System.out.print("Enter name : ");
name = input.nextLine();
System.out.print("Enter ID : ");
ID = input.nextLine();
System.out.print("Enter color : ");
color = input.nextLine();
System.out.print("Is it poisonous? ");
poisonous = input.hasNextBoolean();
input.nextLine();
flowerPack.add(new Fungus(name, ID, color, poisonous));
} else if (type.equalsIgnoreCase("Weed")) {
System.out.print("Enter name : ");
name = input.nextLine();
System.out.print("Enter ID : ");
ID = input.nextLine();
System.out.print("Enter color : ");
color = input.nextLine();
System.out.print("Is it Poisonous? ");
poisonous = input.hasNextBoolean();
input.nextLine();
System.out.print("Is it Edible? ");
edible = input.hasNextBoolean();
input.nextLine();
System.out.print("Is it Medicinal? ");
medicinal = input.hasNextBoolean();
input.nextLine();
flowerPack.add(new Weed(name, ID, color, poisonous, edible, medicinal));
}
break;
case 2:
input.nextLine();
System.out.print("Enter the name of the plant you want to remove : ");
name = input.nextLine();
int flag = 0;
for (Plant plant : flowerPack) {
if (plant.getName().equalsIgnoreCase(name)) {
System.out.println("plant removed sucessfully");
flag = 1;
break;
}
}
if (flag == 0) {
System.out.println("plant not found");
}
break;
case 3:
input.nextLine();
System.out.print("Enter the name of the plant you want to search : ");
name = input.nextLine();
int f = 0;
for (Plant plant : flowerPack) {
if (plant.getName().equalsIgnoreCase(name)) {
System.out.println("plant found sucessfully");
f = 1;
break;
}
}
if (f == 0) {
System.out.println("plant not found");
}
break;
case 4:
input.nextLine();
System.out.print("Enter the name of the plant you want to filter: ");
name = input.nextLine();
f = 0;
for (Plant plant : flowerPack) {
if (plant.getName().equalsIgnoreCase(name)) {
System.out.println("Name: " + plant.getName() + " ID: " + plant.getID());
f = 1;
}
}
if (f == 0) {
System.out.println("NO plant of this name in List");
}
break;
case 5:
input.nextLine();
System.out.print("Enter the name of the file to save plants: ");
name = input.nextLine();
FileWriter fw = new FileWriter(name);
for(Plant plant: flowerPack)
{
fw.write(plant.toString());
fw.write(" ");
}
fw.close();
break;
case 6:
input.nextLine();
System.out.print("Enter the name of the file to read plants: ");
name = input.nextLine();
FileReader fr = new FileReader(name);
Scanner fileScanner = new Scanner(fr);
while(fileScanner.hasNextLine())
{
String line = fileScanner.nextLine();
String[] data = line.split(",");
String flowertype = data[0];
if (flowertype.equalsIgnoreCase("Flower")) {
name = data[1];
ID = data[2];
color = data[3];
thorns = data[4].equals("true");
smell = data[5].equals("true");
flowerPack.add(new Flower(name, ID, color, thorns, smell));
} else if (flowertype.equalsIgnoreCase("Fungus")) {
name = data[1];
ID = data[2];
color = data[3];
poisonous = data[4].equals("true");
flowerPack.add(new Fungus(name, ID, color, poisonous));
} else if (flowertype.equalsIgnoreCase("Weed")) {
name = data[1];
ID = data[2];
color = data[3];
poisonous = data[4].equals("true");
edible = data[5].equals("true");
medicinal = data[6].equals("true");
flowerPack.add(new Weed(name, ID, color, poisonous, edible, medicinal));
}
}
fr.close();
fileScanner.close();
break;
case 7:
input.close();
System.exit(0);
}
}
} catch (Exception e) {
System.out.println(e);
}
}
}
============================
Plant
public class Plant {
String name;
String ID;
Plant(String name, String ID) {
this.name = name;
this.ID = ID;
}
public String getName() {
return name;
}
public String getID() {
return ID;
}
public String toString()
{
return name + "," + ID;
}
}
===========================
class Herb extends Plant{
String Color;
boolean Flavor;
boolean Medicinal;
boolean Seasonal;
public Herb(String name, String ID, String Color, boolean Flavor, boolean Medicinal, boolean Seasonal)
{
super (name, ID);
this.Color = Color;
this.Flavor = Flavor;
this.Medicinal = Medicinal;
this.Seasonal = Seasonal;
}
public String toStrin()
{
return "Herb," +super.toString() + "," + Flavor + "," + Medicinal + "," + Seasonal;
}
}
====================
Weed
class Weed extends Plant {
String Color;
boolean Poisonous;
boolean Edible;
boolean Medicinal;
public Weed(String name, String ID, String Color, boolean Poisonous, boolean Edible, boolean Medicinal) {
super(name, ID);
this.Color = Color;
this.Poisonous = Poisonous;
this.Edible = Edible;
this.Medicinal = Medicinal;
}
public String toString()
{
return "weed," + super.toString() + "," + Color + "," + Poisonous + "," + Edible + "," + Medicinal;
}
}
======================
Fungus
class Fungus extends Plant {
String Color;
boolean Poisonous;
public Fungus(String name, String ID, String Color, boolean Poisonous) {
super(name, ID);
this.Color = Color;
this.Poisonous = Poisonous;
}
public String toString()
{
return "fungus," + super.toString() + "," + Color + "," + Poisonous;
}
}
============================
Flower
class Flower extends Plant {
String color;
boolean thorns;
boolean smell;
public Flower(String name, String ID, String color, boolean thorns, boolean smell) {
super(name, ID);
this.color = color;
this.thorns = thorns;
this.smell = smell;
}
public String toString()
{
return "flower," + super.toString() + "," + color + "," + thorns + "," + smell;
}
}
Explanation / Answer
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class Final {
public static void main(String[] args) {
try {
List flowerPack = new LinkedList<>();
Scanner input = new Scanner(System.in);
int choice;
String name, color, ID;
boolean poisonous, edible, medicinal, smell, thorns, flavor, seasonal;
while (true) {
System.out.println(" 1. Add plants");
System.out.println("2. Remove plants");
System.out.println("3. Search plants");
System.out.println("4. Filter plants");
System.out.println("5. Save plants to file");
System.out.println("6. Load plants from file");
System.out.println("7. Quit");
System.out.print("Enter your choice: ");
choice = input.nextInt();
switch (choice) {
case 1:
input.nextLine();
System.out.print("You want to add Flower, Fungus, Herb or Weed? ");
String type = input.nextLine();
if (type.equalsIgnoreCase("Flower")) {
System.out.print("Enter name : ");
name = input.nextLine();
System.out.print("Enter ID : ");
ID = input.nextLine();
System.out.print("Enter color : ");
color = input.nextLine();
System.out.print("Has thorns? ");
thorns = input.hasNextBoolean();
input.nextLine();
System.out.print("Has smell? ");
smell = input.hasNextBoolean();
input.nextLine();
flowerPack.add(new Flower(name, ID, color, thorns, smell));
} else if (type.equalsIgnoreCase("Fungus")) {
System.out.print("Enter name : ");
name = input.nextLine();
System.out.print("Enter ID : ");
ID = input.nextLine();
System.out.print("Enter color : ");
color = input.nextLine();
System.out.print("Is it poisonous? ");
poisonous = input.hasNextBoolean();
input.nextLine();
flowerPack.add(new Fungus(name, ID, color, poisonous));
} else if (type.equalsIgnoreCase("Weed")) {
System.out.print("Enter name : ");
name = input.nextLine();
System.out.print("Enter ID : ");
ID = input.nextLine();
System.out.print("Enter color : ");
color = input.nextLine();
System.out.print("Is it Poisonous? ");
poisonous = input.hasNextBoolean();
input.nextLine();
System.out.print("Is it Edible? ");
edible = input.hasNextBoolean();
input.nextLine();
System.out.print("Is it Medicinal? ");
medicinal = input.hasNextBoolean();
input.nextLine();
flowerPack.add(new Weed(name, ID, color, poisonous, edible, medicinal));
}
break;
case 2:
input.nextLine();
System.out.print("Enter the name of the plant you want to remove : ");
name = input.nextLine();
int flag = 0;
for (Plant plant : flowerPack) {
if (plant.getName().equalsIgnoreCase(name)) {
System.out.println("plant removed sucessfully");
flag = 1;
break;
}
}
if (flag == 0) {
System.out.println("plant not found");
}
break;
case 3:
input.nextLine();
System.out.print("Enter the name of the plant you want to search : ");
name = input.nextLine();
int f = 0;
for (Plant plant : flowerPack) {
if (plant.getName().equalsIgnoreCase(name)) {
System.out.println("plant found sucessfully");
f = 1;
break;
}
}
if (f == 0) {
System.out.println("plant not found");
}
break;
case 4:
input.nextLine();
System.out.print("Enter the name of the plant you want to filter: ");
name = input.nextLine();
f = 0;
for (Plant plant : flowerPack) {
if (plant.getName().equalsIgnoreCase(name)) {
System.out.println("Name: " + plant.getName() + " ID: " + plant.getID());
f = 1;
}
}
if (f == 0) {
System.out.println("NO plant of this name in List");
}
break;
case 5:
input.nextLine();
System.out.print("Enter the name of the file to save plants: ");
name = input.nextLine();
FileWriter fw = new FileWriter(name);
for(Plant plant: flowerPack)
{
fw.write(plant.toString());
fw.write(" ");
}
fw.close();
break;
case 6:
input.nextLine();
System.out.print("Enter the name of the file to read plants: ");
name = input.nextLine();
FileReader fr = new FileReader(name);
Scanner fileScanner = new Scanner(fr);
while(fileScanner.hasNextLine())
{
String line = fileScanner.nextLine();
String[] data = line.split(",");
String flowertype = data[0];
if (flowertype.equalsIgnoreCase("Flower")) {
name = data[1];
ID = data[2];
color = data[3];
thorns = data[4].equals("true");
smell = data[5].equals("true");
flowerPack.add(new Flower(name, ID, color, thorns, smell));
} else if (flowertype.equalsIgnoreCase("Fungus")) {
name = data[1];
ID = data[2];
color = data[3];
poisonous = data[4].equals("true");
flowerPack.add(new Fungus(name, ID, color, poisonous));
} else if (flowertype.equalsIgnoreCase("Weed")) {
name = data[1];
ID = data[2];
color = data[3];
poisonous = data[4].equals("true");
edible = data[5].equals("true");
medicinal = data[6].equals("true");
flowerPack.add(new Weed(name, ID, color, poisonous, edible, medicinal));
}
}
fr.close();
fileScanner.close();
break;
case 7:
input.close();
System.exit(0);
}
}
} catch (Exception e) {
System.out.println(e);
}
}
}
============================
Plant
public class Plant {
String name;
String ID;
Plant(String name, String ID) {
this.name = name;
this.ID = ID;
}
public String getName() {
return name;
}
public String getID() {
return ID;
}
public String toString()
{
return name + "," + ID;
}
}
===========================
class Herb extends Plant{
String Color;
boolean Flavor;
boolean Medicinal;
boolean Seasonal;
public Herb(String name, String ID, String Color, boolean Flavor, boolean Medicinal, boolean Seasonal)
{
super (name, ID);
this.Color = Color;
this.Flavor = Flavor;
this.Medicinal = Medicinal;
this.Seasonal = Seasonal;
}
public String toStrin()
{
return "Herb," +super.toString() + "," + Flavor + "," + Medicinal + "," + Seasonal;
}
}
====================
Weed
class Weed extends Plant {
String Color;
boolean Poisonous;
boolean Edible;
boolean Medicinal;
public Weed(String name, String ID, String Color, boolean Poisonous, boolean Edible, boolean Medicinal) {
super(name, ID);
this.Color = Color;
this.Poisonous = Poisonous;
this.Edible = Edible;
this.Medicinal = Medicinal;
}
public String toString()
{
return "weed," + super.toString() + "," + Color + "," + Poisonous + "," + Edible + "," + Medicinal;
}
}
======================
Fungus
class Fungus extends Plant {
String Color;
boolean Poisonous;
public Fungus(String name, String ID, String Color, boolean Poisonous) {
super(name, ID);
this.Color = Color;
this.Poisonous = Poisonous;
}
public String toString()
{
return "fungus," + super.toString() + "," + Color + "," + Poisonous;
}
}
============================
Flower
class Flower extends Plant {
String color;
boolean thorns;
boolean smell;
public Flower(String name, String ID, String color, boolean thorns, boolean smell) {
super(name, ID);
this.color = color;
this.thorns = thorns;
this.smell = smell;
}
public String toString()
{
return "flower," + super.toString() + "," + color + "," + thorns + "," + smell;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.