diff --git a/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/Category.java b/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/Category.java new file mode 100644 index 000000000..abcac7212 --- /dev/null +++ b/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/Category.java @@ -0,0 +1,5 @@ +package org.launchcode; + +public enum Category { + APPETIZER, MAIN_COURSE, DESSERT +} diff --git a/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/Main.java b/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/Main.java index cad5849f1..7bc146427 100644 --- a/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/Main.java +++ b/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/Main.java @@ -1,8 +1,47 @@ package org.launchcode; +import java.util.ArrayList; +import java.util.Date; +import java.util.Scanner; + public class Main { public static void main(String[] args) { - // write your code here + + // Initializing menu items + ArrayList menuItems = new ArrayList<>(); + menuItems.add(new MenuItem(5.99, "Bruschetta", Category.APPETIZER, true)); + menuItems.add(new MenuItem(15.99, "Chicken Alfredo", Category.MAIN_COURSE, false)); + menuItems.add(new MenuItem(7.99, "Brownie", Category.DESSERT, false)); + + // Using the provided constructor to initialize the Menu + Menu menu = new Menu(new Date(), menuItems); + + Scanner scanner = new Scanner(System.in); + + String choice; + + do { + System.out.println("Do you want to print a single item, all menu items, or exit? (Enter 'single', 'all' or '0' to exit)"); + choice = scanner.nextLine().toLowerCase().trim(); + + switch(choice) { + case "single": + System.out.println("Please enter the beginning of the item description:"); + String startOfDescription = scanner.nextLine().toLowerCase().trim(); + menu.printItemsWithDescription(startOfDescription); + break; + case "all": + menu.printMenu(); + break; + case "0": + System.out.println("Exiting the program..."); + break; + default: + System.out.println("Invalid choice."); + break; + } + } while (!"0".equals(choice)); + scanner.close(); } } diff --git a/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/Menu.java b/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/Menu.java new file mode 100644 index 000000000..95e954a58 --- /dev/null +++ b/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/Menu.java @@ -0,0 +1,88 @@ +package org.launchcode; + +import java.util.ArrayList; +import java.util.Date; + +public class Menu { + @Override + public String toString() { +/* return "Menu{" + + "lastUpdated=" + lastUpdated + + ", items=" + items + + '}';*/ + + return "Menu (Last Updated: " + lastUpdated + ")\n items=" + items; + } + + private Date lastUpdated; + private ArrayList items; + + public Menu(Date d, ArrayList i) { + this.lastUpdated = d; + this.items = i; + } + + // Add item to menu and update the lastUpdated date + public void addItem(MenuItem item) { + this.items.add(item); + updateLastUpdated(); + } + + // // Remove item from menu and update the lastUpdated date + public void removeItem(MenuItem item) { + this.items.remove(item); + updateLastUpdated(); + } + + // Print a single menu item + public void printMenuItem(MenuItem item) { + System.out.println("Description: " + item.getDescription()); + System.out.println("Category: " + item.getCategory()); + System.out.println("Price: $" + item.getPrice()); + System.out.println("New Item: " + (item.isNew() ? "Yes" : "No")); + System.out.println(); + } + + // Print the entire menu + public void printMenu() { + System.out.println("Menu (Last Updated: " + lastUpdated + ")"); + for (MenuItem item : items) { + printMenuItem(item); + } + + //System.out.println(this); + } + + public void printItemsWithDescription(String startOfDescription) { + boolean found = false; + for (MenuItem item : items) { + if (item.getDescription().toLowerCase().startsWith(startOfDescription)) { + printMenuItem(item); + found = true; + } + } + if (!found) { + System.out.println("No items matched your description."); + } + } + + private void updateLastUpdated() { + this.lastUpdated = new Date(); + } + + public void setLastUpdated(Date lastUpdated) { + this.lastUpdated = lastUpdated; + } + + public void setItems(ArrayList items) { + this.items = items; + } + + public Date getLastUpdated() { + return lastUpdated; + } + + public ArrayList getItems() { + return items; + } +} diff --git a/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/MenuItem.java b/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/MenuItem.java new file mode 100644 index 000000000..3e1939232 --- /dev/null +++ b/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/MenuItem.java @@ -0,0 +1,77 @@ +package org.launchcode; + +import java.util.Objects; + +public class MenuItem { + private double price; + private String description; + private Category category; + private boolean isNew; + + @Override + public String toString() { +/* return "MenuItem{" + + "price=" + price + + ", description='" + description + '\'' + + ", category=" + category + + ", isNew=" + isNew + + '}';*/ + + return "Description: " + description+ + "\nCategory: " + category + + "\nPrice: $" + price + + "\nNew Item: " + (isNew ? "Yes" : "No") + "\n\n"; + } + + public double getPrice() { + return price; + } + + public String getDescription() { + return description; + } + + public Category getCategory() { + return category; + } + + public boolean isNew() { + return isNew; + } + + public MenuItem(double p, String d, Category c, boolean iN) { + this.price = p; + this.description = d; + this.category = c; + this.isNew = iN; + } + + public void setPrice(double price) { + this.price = price; + } + + public void setDescription(String description) { + this.description = description; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + MenuItem menuItem = (MenuItem) o; + return Double.compare(menuItem.price, price) == 0 && Objects.equals(description, menuItem.description) && category == menuItem.category; + } + + @Override + public int hashCode() { + return Objects.hash(price, description, category); + } + + public void setCategory(Category category) { + this.category = category; + } + + public void setNew(boolean aNew) { + isNew = aNew; + } +} diff --git a/classes-part-one/studio/restaurant-menu/src/test/java/MenuTest.java b/classes-part-one/studio/restaurant-menu/src/test/java/MenuTest.java new file mode 100644 index 000000000..55ca61b88 --- /dev/null +++ b/classes-part-one/studio/restaurant-menu/src/test/java/MenuTest.java @@ -0,0 +1,38 @@ +import org.launchcode.Category; +import org.launchcode.Menu; +import org.launchcode.MenuItem; + + +import java.util.ArrayList; +import java.util.Date; + + +public class MenuTest { + + public static void main(String[] args) { + // Creating some sample menu items + MenuItem item1 = new MenuItem(5.99, "Bruschetta", Category.APPETIZER, true); + MenuItem item2 = new MenuItem(15.99, "Chicken Alfredo", Category.MAIN_COURSE, false); + MenuItem item3 = new MenuItem(7.50, "Chocolate Cake", Category.DESSERT, true); + + // Adding menu items to a list + ArrayList menuItems = new ArrayList<>(); + menuItems.add(item1); + menuItems.add(item2); + menuItems.add(item3); + + // Creating a Menu + Menu menu = new Menu(new Date(), menuItems); + + // Printing the menu items + System.out.println("Menu (Last Updated: " + menu.getLastUpdated() + ")"); + for (MenuItem item : menu.getItems()) { + System.out.println("Description: " + item.getDescription() + + "\nCategory: " + item.getCategory() + + "\nPrice: $" + item.getPrice() + + "\nNew Item: " + (item.isNew() ? "Yes" : "No") + "\n"); + } + + //System.out.println( menu ); + } +} diff --git a/datatypes/datatype-examples/src/main/java/org/launchcode/HelloMethods.java b/datatypes/datatype-examples/src/main/org/launchcode/HelloMethods.java similarity index 100% rename from datatypes/datatype-examples/src/main/java/org/launchcode/HelloMethods.java rename to datatypes/datatype-examples/src/main/org/launchcode/HelloMethods.java diff --git a/datatypes/datatype-examples/src/main/java/org/launchcode/Message.java b/datatypes/datatype-examples/src/main/org/launchcode/Message.java similarity index 100% rename from datatypes/datatype-examples/src/main/java/org/launchcode/Message.java rename to datatypes/datatype-examples/src/main/org/launchcode/Message.java diff --git a/datatypes/datatype-examples/src/main/java/org/launchcode/TempConverter.java b/datatypes/datatype-examples/src/main/org/launchcode/TempConverter.java similarity index 90% rename from datatypes/datatype-examples/src/main/java/org/launchcode/TempConverter.java rename to datatypes/datatype-examples/src/main/org/launchcode/TempConverter.java index d09ac901d..defd49353 100644 --- a/datatypes/datatype-examples/src/main/java/org/launchcode/TempConverter.java +++ b/datatypes/datatype-examples/src/main/org/launchcode/TempConverter.java @@ -1,4 +1,4 @@ -package org.launchcode; +package org.launchcode;//package org.launchcode; import java.util.Scanner; diff --git a/datatypes/datatypes-exercises/src/main/java/org/launchcode/HelloWorld.java b/datatypes/datatypes-exercises/src/main/java/org/launchcode/HelloWorld.java new file mode 100644 index 000000000..96d7b296d --- /dev/null +++ b/datatypes/datatypes-exercises/src/main/java/org/launchcode/HelloWorld.java @@ -0,0 +1,18 @@ +package org.launchcode; + +import java.util.Scanner; + + +public class HelloWorld { + + public static void main(String[] args) { + Scanner input = new Scanner(System.in); + System.out.println("Hello, what is your name? "); + + String name = input.next(); + + System.out.println("Hello " + name); + + } + +} diff --git a/datatypes/datatypes-exercises/src/main/java/org/launchcode/InputOutput.java b/datatypes/datatypes-exercises/src/main/java/org/launchcode/InputOutput.java new file mode 100644 index 000000000..078410618 --- /dev/null +++ b/datatypes/datatypes-exercises/src/main/java/org/launchcode/InputOutput.java @@ -0,0 +1,5 @@ +package org.launchcode; + +public class InputOutput { + +} diff --git a/inheritance/studio/pom.xml b/inheritance/studio/pom.xml new file mode 100644 index 000000000..a45aa8969 --- /dev/null +++ b/inheritance/studio/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + + org.example + studio + 1.0-SNAPSHOT + + + 17 + 17 + + + \ No newline at end of file diff --git a/inheritance/studio/src/main/java/org/launchcode/CheckboxQuestion.java b/inheritance/studio/src/main/java/org/launchcode/CheckboxQuestion.java new file mode 100644 index 000000000..346c0aeaa --- /dev/null +++ b/inheritance/studio/src/main/java/org/launchcode/CheckboxQuestion.java @@ -0,0 +1,41 @@ +package org.launchcode; + +import java.util.List; + + + +class CheckboxQuestion extends Question { + private List choices; + private List correctAnswers; + + public CheckboxQuestion(String questionText, List choices, List correctAnswers) { + super(questionText, correctAnswers); // Pass correctAnswers to the superclass constructor + this.choices = choices; + this.correctAnswers = correctAnswers; + } + + @Override + public void displayQuestion() { + System.out.println("Question: " + getQuestionText()); + System.out.println("Choices:"); + for (int i = 0; i < choices.size(); i++) { + System.out.println((char)('A' + i) + ") " + choices.get(i)); // Use letters (A, B, C, ...) for choices + } + System.out.println("Select multiple choices separated by commas (e.g., A, C): "); + } + + @Override + public boolean isCorrect(Object answer) { + if (answer instanceof String) { + String[] selectedChoices = ((String) answer).split(","); + for (String choice : selectedChoices) { + choice = choice.trim(); // Remove leading/trailing whitespace + if (!correctAnswers.contains(choice)) { + return false; // If any choice is not correct, the answer is incorrect + } + } + return true; + } + return false; // Incorrect format for answer + } +} diff --git a/inheritance/studio/src/main/java/org/launchcode/MultipleChoiceQuestion.java b/inheritance/studio/src/main/java/org/launchcode/MultipleChoiceQuestion.java new file mode 100644 index 000000000..cca836dc2 --- /dev/null +++ b/inheritance/studio/src/main/java/org/launchcode/MultipleChoiceQuestion.java @@ -0,0 +1,25 @@ +package org.launchcode; + +import java.util.List; + +class MultipleChoiceQuestion extends Question { + private List choices; + + public MultipleChoiceQuestion(String questionText, List choices, String correctAnswer) { + super(questionText, correctAnswer); + this.choices = choices; + } + + @Override + public void displayQuestion() { + System.out.println("Question: " + getQuestionText()); + System.out.println("Choices:"); + for (int i = 0; i < choices.size(); i++) { + System.out.println((i + 1) + ". " + choices.get(i)); + } + } + + public void displayAnswer() { + System.out.println("Correct Answer: " + getCorrectAnswer()); + } +} diff --git a/inheritance/studio/src/main/java/org/launchcode/Question.java b/inheritance/studio/src/main/java/org/launchcode/Question.java new file mode 100644 index 000000000..059193a13 --- /dev/null +++ b/inheritance/studio/src/main/java/org/launchcode/Question.java @@ -0,0 +1,28 @@ +package org.launchcode; + +class Question { + private String questionText; + private Object correctAnswer; + + public Question(String questionText, Object correctAnswer) { + this.questionText = questionText; + this.correctAnswer = correctAnswer; + } + + public String getQuestionText() { + return questionText; + } + + public Object getCorrectAnswer() { + return correctAnswer; + } + + public void displayQuestion() { + System.out.println("Question: " + questionText); + } + + public boolean isCorrect(Object answer) { + // Check if the provided answer is correct + return answer.equals(correctAnswer); + } +} diff --git a/inheritance/studio/src/main/java/org/launchcode/Quiz.java b/inheritance/studio/src/main/java/org/launchcode/Quiz.java new file mode 100644 index 000000000..4c1a8b3c0 --- /dev/null +++ b/inheritance/studio/src/main/java/org/launchcode/Quiz.java @@ -0,0 +1,44 @@ +package org.launchcode; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + + + + +class Quiz { + private List questions; + private int score; + + public Quiz() { + this.questions = new ArrayList<>(); + this.score = 0; + } + + public void addQuestion(Question question) { + questions.add(question); + } + + public void runQuiz() { + Scanner scanner = new Scanner(System.in); + + for (Question question : questions) { + question.displayQuestion(); + String userAnswer = scanner.nextLine(); + + if (question.isCorrect(userAnswer)) { + System.out.println("Correct!"); + score++; + } else { + System.out.println("Incorrect."); + } + } + + scanner.close(); + } + + public void gradeQuiz() { + System.out.println("Quiz Score: " + score + "/" + questions.size()); + } +} diff --git a/inheritance/studio/src/main/java/org/launchcode/QuizRunner.java b/inheritance/studio/src/main/java/org/launchcode/QuizRunner.java new file mode 100644 index 000000000..1a7b91508 --- /dev/null +++ b/inheritance/studio/src/main/java/org/launchcode/QuizRunner.java @@ -0,0 +1,40 @@ +package org.launchcode; + +import java.util.Arrays; +import java.util.List; + +public class QuizRunner { + public static void main(String[] args) { + // Create a quiz + Quiz quiz = new Quiz(); + + // Sample Multiple Choice Question + List mcChoices = Arrays.asList( + "A) Paris", + "B) London", + "C) New York", + "D) Tokyo" + ); + quiz.addQuestion(new MultipleChoiceQuestion("What is the capital of France?", mcChoices, "A")); + + // Sample Checkbox Question + List cbChoices = Arrays.asList( + "A) Red", + "B) Blue", + "C) Green", + "D) Yellow" + ); + List cbCorrectAnswers = Arrays.asList("A", "C"); + quiz.addQuestion(new CheckboxQuestion("Select the primary colors:", cbChoices, cbCorrectAnswers)); + + // Sample True/False Question + quiz.addQuestion(new TrueFalseQuestion("Is the sky blue?", true)); + + // Run the quiz + System.out.println("Welcome to the Quiz!"); + quiz.runQuiz(); + + // Grade the quiz + quiz.gradeQuiz(); + } +} diff --git a/inheritance/studio/src/main/java/org/launchcode/TrueFalseQuestion.java b/inheritance/studio/src/main/java/org/launchcode/TrueFalseQuestion.java new file mode 100644 index 000000000..563625df0 --- /dev/null +++ b/inheritance/studio/src/main/java/org/launchcode/TrueFalseQuestion.java @@ -0,0 +1,22 @@ +package org.launchcode; + +class TrueFalseQuestion extends org.launchcode.Question { + public TrueFalseQuestion(String questionText, boolean correctAnswer) { + super(questionText, correctAnswer); + } + + @Override + public void displayQuestion() { + System.out.println("Question: " + getQuestionText()); + System.out.println("True or False? (Enter 'T' or 'F'): "); + } + + @Override + public boolean isCorrect(Object answer) { + if (answer instanceof String) { + String userAnswer = ((String) answer).trim().toUpperCase(); // Convert to uppercase for case insensitivity + return userAnswer.equals("T") && (boolean) getCorrectAnswer(); // 'T' should be true + } + return false; // Incorrect format for answer + } +} diff --git a/inheritance/studio/target/classes/org/launchcode/CheckboxQuestion.class b/inheritance/studio/target/classes/org/launchcode/CheckboxQuestion.class new file mode 100644 index 000000000..81773a252 Binary files /dev/null and b/inheritance/studio/target/classes/org/launchcode/CheckboxQuestion.class differ diff --git a/inheritance/studio/target/classes/org/launchcode/MultipleChoiceQuestion.class b/inheritance/studio/target/classes/org/launchcode/MultipleChoiceQuestion.class new file mode 100644 index 000000000..28d5c5463 Binary files /dev/null and b/inheritance/studio/target/classes/org/launchcode/MultipleChoiceQuestion.class differ diff --git a/inheritance/studio/target/classes/org/launchcode/Question.class b/inheritance/studio/target/classes/org/launchcode/Question.class new file mode 100644 index 000000000..99b9bab59 Binary files /dev/null and b/inheritance/studio/target/classes/org/launchcode/Question.class differ diff --git a/inheritance/studio/target/classes/org/launchcode/Quiz.class b/inheritance/studio/target/classes/org/launchcode/Quiz.class new file mode 100644 index 000000000..b55a484b7 Binary files /dev/null and b/inheritance/studio/target/classes/org/launchcode/Quiz.class differ diff --git a/inheritance/studio/target/classes/org/launchcode/QuizRunner.class b/inheritance/studio/target/classes/org/launchcode/QuizRunner.class new file mode 100644 index 000000000..930bec08b Binary files /dev/null and b/inheritance/studio/target/classes/org/launchcode/QuizRunner.class differ diff --git a/inheritance/studio/target/classes/org/launchcode/TrueFalseQuestion.class b/inheritance/studio/target/classes/org/launchcode/TrueFalseQuestion.class new file mode 100644 index 000000000..9d92be53a Binary files /dev/null and b/inheritance/studio/target/classes/org/launchcode/TrueFalseQuestion.class differ diff --git a/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/ConeComparator.java b/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/ConeComparator.java new file mode 100644 index 000000000..34a0f7198 --- /dev/null +++ b/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/ConeComparator.java @@ -0,0 +1,10 @@ +package org.launchcode; + +import java.util.Comparator; + +public class ConeComparator implements Comparator { + @Override + public int compare(Cone o1, Cone o2) { + return Double.compare(o1.getCost(), o2.getCost()); + } +} diff --git a/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/FlavorComparator.java b/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/FlavorComparator.java new file mode 100644 index 000000000..581523320 --- /dev/null +++ b/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/FlavorComparator.java @@ -0,0 +1,16 @@ +package org.launchcode; + +import java.util.Comparator; + +public class FlavorComparator implements Comparator { + @Override + public int compare(Flavor o1, Flavor o2) { + return o1.getName().compareTo(o2.getName()); + + //int allergensCount1 = 01.allergens.size(); + //int allergensCount2 = 02.allergens.size(); + + // Compare allergen counts in reverse order (from highest to lowest) + //return Integer.compare(allergensCount2, allergensCount1); + } +} diff --git a/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/Main.java b/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/Main.java index 8787f2454..e85705e83 100644 --- a/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/Main.java +++ b/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/Main.java @@ -1,12 +1,38 @@ package org.launchcode; import java.util.ArrayList; +import java.util.Comparator; public class Main { public static void main(String[] args) { Case menu = new Case(); ArrayList flavors = menu.getFlavors(); ArrayList cones = menu.getCones(); + //Comparator comparator = new FlavorComparator(); + System.out.println("========Before Flavors Sort======="); + for(Flavor flavor: flavors){ + System.out.println(flavor); + } + + flavors.sort(new FlavorComparator()); + + System.out.println("========After Flavors Sort======="); + for(Flavor flavor: flavors){ + System.out.println(flavor); + } + + System.out.println("========Before Cones Sort======="); + for(Cone cone: cones){ + System.out.println(cone); + } + + cones.sort(new ConeComparator()); + + System.out.println("========After Cones Sort======="); + for(Cone cone: cones){ + System.out.println(cone); + } + // TODO: Use a Comparator class to sort the 'flavors' array alphabetically by the 'name' field. diff --git a/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/BaseDisc.java b/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/BaseDisc.java new file mode 100644 index 000000000..555541f9a --- /dev/null +++ b/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/BaseDisc.java @@ -0,0 +1,54 @@ +package org.launchcode; + +public abstract class BaseDisc implements OpticalDisc { + private String name; + private String discType; + private String contents; + + // Constructors, getters, setters, and other common methods + // ... + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDiscType() { + return discType; + } + + public void setDiscType(String discType) { + this.discType = discType; + } + + + @Override + public abstract void spinDisc(); + + @Override + public void storeData(String data) { + // Common method for storing data on the disc + this.contents = data; + } + + @Override + public void writeData(String data) { + // Common method for writing data to the disc + storeData(data); + } + + @Override + public String readData() { + // Common method for reading data from the disc + return contents; + } + + @Override + public String reportInformation() { + // Common method for reporting disc information + return "Name: " + name + "\nType: " + discType + "\nContents: " + contents; + } +} diff --git a/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/CD.java b/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/CD.java index 51781c249..5298462d1 100644 --- a/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/CD.java +++ b/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/CD.java @@ -1,8 +1,20 @@ package org.launchcode; -public class CD { +public class CD extends BaseDisc{ // TODO: Implement your custom interface. // TODO: Determine which fields, methods, and constructors can be extended from the base class and which ones // need to be declared separately. + private int spinSpeed; + + public CD(String name, String discType) { + setName(name); + setDiscType(discType); + this.spinSpeed = 200; // Default CD spin speed + } + + @Override + public void spinDisc() { + System.out.println("A CD spins at a rate of " + this.spinSpeed +" - 500 rpm."); + } } diff --git a/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/DVD.java b/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/DVD.java index 7c2442568..486038f3d 100644 --- a/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/DVD.java +++ b/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/DVD.java @@ -1,8 +1,21 @@ package org.launchcode; -public class DVD { +public class DVD extends BaseDisc{ + private int spinSpeed; // TODO: Implement your custom interface. // TODO: Determine which fields, methods, and constructors can be extended from the base class and which ones // need to be declared separately. + + + public DVD(String name, String discType) { + setName(name); + setDiscType(discType); + this.spinSpeed = 570; // Default DVD spin speed + } + + @Override + public void spinDisc() { + System.out.println("A DVD spins at a rate of " + this.spinSpeed +" - 1600 rpm."); + } } diff --git a/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/Main.java b/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/Main.java index 7d00acf4c..b7b2743e4 100644 --- a/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/Main.java +++ b/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/Main.java @@ -6,5 +6,21 @@ public static void main(String[] args) { // TODO: Declare and initialize a CD and a DVD object. // TODO: Call each CD and DVD method to verify that they work as expected. + + CD myCd = new CD("Music CD", "CD-R"); + DVD myDvd = new DVD("Movie DVD", "DVD-RW"); + + // Test common behaviors + myCd.spinDisc(); + myDvd.spinDisc(); + + myCd.storeData("Sample CD data"); + myDvd.storeData("Sample DVD data"); + + System.out.println(myCd.readData()); + System.out.println(myDvd.readData()); + + System.out.println(myCd.reportInformation()); + System.out.println(myDvd.reportInformation()); } } \ No newline at end of file diff --git a/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/OpticalDisc.java b/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/OpticalDisc.java new file mode 100644 index 000000000..10c86cecb --- /dev/null +++ b/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/OpticalDisc.java @@ -0,0 +1,9 @@ +package org.launchcode; + +public interface OpticalDisc { + void spinDisc(); + void storeData(String data); + void writeData(String data); + String readData(); + String reportInformation(); +} diff --git a/unit-testing/studio/balanced-brackets/src/main/java/org/launchcode/BalancedBrackets.java b/unit-testing/studio/balanced-brackets/src/main/java/org/launchcode/BalancedBrackets.java index 890783e59..ddf3a377c 100644 --- a/unit-testing/studio/balanced-brackets/src/main/java/org/launchcode/BalancedBrackets.java +++ b/unit-testing/studio/balanced-brackets/src/main/java/org/launchcode/BalancedBrackets.java @@ -25,6 +25,9 @@ public static boolean hasBalancedBrackets(String str) { if (ch == '[') { brackets++; } else if (ch == ']') { + if(brackets <= 0){ + return false; + } brackets--; } } diff --git a/unit-testing/studio/balanced-brackets/src/test/java/org/launchcode/BalancedBracketsTest.java b/unit-testing/studio/balanced-brackets/src/test/java/org/launchcode/BalancedBracketsTest.java index a9d8821b3..59ddebad3 100644 --- a/unit-testing/studio/balanced-brackets/src/test/java/org/launchcode/BalancedBracketsTest.java +++ b/unit-testing/studio/balanced-brackets/src/test/java/org/launchcode/BalancedBracketsTest.java @@ -10,4 +10,40 @@ class BalancedBracketsTest { public void emptyTest() { assertEquals(true, true); } + + @Test + public void stringThatStartsAndEndsWithBracketReturnsTrue(){ + BalancedBrackets brackets = new BalancedBrackets(); + assertTrue(BalancedBrackets.hasBalancedBrackets("[ another sentense]")); + } + @Test + public void brachektInMiddleOfStringAndEndOfStringReturnsTrue(){ + assertTrue(BalancedBrackets.hasBalancedBrackets("Test [Code]")); + } + + @Test + public void openningAndClosingBracketsAtTheStartOfAStringReturnTrue(){ + assertTrue(BalancedBrackets.hasBalancedBrackets("[] Launc hCode")); + } + + @Test + public void openingBracketWithNoClosingBracketReturnsFalse(){ + assertFalse(BalancedBrackets.hasBalancedBrackets("[LaunchCode")); + } + + @Test + public void closingBracketBeforeOpeningBracketReturnsFalse(){ + assertFalse(BalancedBrackets.hasBalancedBrackets("Launch]Code[")); + } + + @Test + public void singleOpeningBracketReturnsFalse(){ + assertFalse(BalancedBrackets.hasBalancedBrackets("[")); + } + + @Test + public void closingThenOpeningBracketReturnsFalse(){ + assertFalse(BalancedBrackets.hasBalancedBrackets("][")); + } + } \ No newline at end of file