diff --git a/chapter-7-exercise/.gitignore b/chapter-7-exercise/.gitignore new file mode 100644 index 000000000..5ff6309b7 --- /dev/null +++ b/chapter-7-exercise/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/chapter-7-exercise/pom.xml b/chapter-7-exercise/pom.xml new file mode 100644 index 000000000..cac6c00cc --- /dev/null +++ b/chapter-7-exercise/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + org.example + exercises + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + \ No newline at end of file diff --git a/chapter-7-exercise/src/main/java/org/example/Main.java b/chapter-7-exercise/src/main/java/org/example/Main.java new file mode 100644 index 000000000..910825b48 --- /dev/null +++ b/chapter-7-exercise/src/main/java/org/example/Main.java @@ -0,0 +1,19 @@ +package org.example; + +// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`, +// then press Enter. You can now see whitespace characters in your code. +public class Main { + public static void main(String[] args) { + // Press Alt+Enter with your caret at the highlighted text to see how + // IntelliJ IDEA suggests fixing it. + System.out.printf("Hello and welcome!"); + + // Press Shift+F10 or click the green arrow button in the gutter to run the code. + for (int i = 1; i <= 5; i++) { + + // Press Shift+F9 to start debugging your code. We have set one breakpoint + // for you, but you can always add more by pressing Ctrl+F8. + System.out.println("i = " + i); + } + } +} \ No newline at end of file diff --git a/chapter-7-exercise/src/main/java/technology/AbstractEntity.java b/chapter-7-exercise/src/main/java/technology/AbstractEntity.java new file mode 100644 index 000000000..bd104e532 --- /dev/null +++ b/chapter-7-exercise/src/main/java/technology/AbstractEntity.java @@ -0,0 +1,17 @@ +package technology; + +public abstract class AbstractEntity { + protected static int newId = 1; + private final int id; + + public AbstractEntity(){ + this.id = newId; + } + + public double getId(){ + return id; + } + + + +} diff --git a/chapter-7-exercise/src/main/java/technology/Computer.java b/chapter-7-exercise/src/main/java/technology/Computer.java new file mode 100644 index 000000000..4517ffea5 --- /dev/null +++ b/chapter-7-exercise/src/main/java/technology/Computer.java @@ -0,0 +1,47 @@ +package technology; + +public class Computer extends AbstractEntity{ + private String operatingSystem; + private String brand; + private int yearRelease; + private double cost; + + public Computer(String operatingSystem, String brand, int yearRelease, double cost){ + this.operatingSystem = operatingSystem; + this.brand = brand; + this.yearRelease = yearRelease; + this.cost = cost; + + } + + public String getOperatingSystem() { + return operatingSystem; + } + + public String getBrand() { + return brand; + } + + public int getYearRelease() { + return yearRelease; + } + + public void setCost(double cost) { + this.cost = cost; + } + + public double getCost() { + return cost; + + } + + @Override + public String toString(){ + String newline = System.lineSeparator(); + return "Product Information: " + newline + + "ID: " + getId() + newline + + "OS: " + operatingSystem + newline + + "Released: " + yearRelease + newline + + "Price: $" + cost + newline; + } +} diff --git a/chapter-7-exercise/src/main/java/technology/Laptop.java b/chapter-7-exercise/src/main/java/technology/Laptop.java new file mode 100644 index 000000000..027e24ebf --- /dev/null +++ b/chapter-7-exercise/src/main/java/technology/Laptop.java @@ -0,0 +1,30 @@ +package technology; + +public class Laptop extends Computer { + + private double screenSize; + private double ram; + + public Laptop(String operatingSystem, String brand, int yearRelease, double cost, double screenSize, double ram){ + super(operatingSystem, brand, yearRelease, cost); + this.screenSize = screenSize; + this.ram = ram; + newId++; + } + + public double getScreenSize() { + return screenSize; + } + + public double getRam() { + return ram; + } + + @Override + public String toString(){ + String newline = System.lineSeparator(); + return super.toString() + + "Screen Size: " + screenSize + " inches" + newline + + "Ram: " + ram + " G" + newline; + } +} diff --git a/chapter-7-exercise/src/main/java/technology/Program.java b/chapter-7-exercise/src/main/java/technology/Program.java new file mode 100644 index 000000000..8bddcc7a2 --- /dev/null +++ b/chapter-7-exercise/src/main/java/technology/Program.java @@ -0,0 +1,22 @@ +package technology; + +public class Program { + + public static void main(String[] args){ + + Laptop macbook = new Laptop("MacBook", "Mac", 2002, 2000, 14.5, 4.0); + Laptop macbookAir = new Laptop("MacBook", "Mac", 2002, 2000, 14.5, 4.0); + Laptop macbook2 = new Laptop("MacBook", "Mac", 2002, 2000, 14.5, 4.0); + SmartPhone iphoneXR = new SmartPhone("IOS", "Iphone", 2016, 150.00, 10.00); + + + + System.out.println(macbook.getId()); + System.out.println(macbookAir.getId()); + System.out.println(macbook2.getId()); + System.out.println(iphoneXR.getId()); + System.out.println(macbook); + System.out.println(iphoneXR); + + } +} diff --git a/chapter-7-exercise/src/main/java/technology/SmartPhone.java b/chapter-7-exercise/src/main/java/technology/SmartPhone.java new file mode 100644 index 000000000..098865130 --- /dev/null +++ b/chapter-7-exercise/src/main/java/technology/SmartPhone.java @@ -0,0 +1,26 @@ +package technology; + +public class SmartPhone extends Computer { + + private double size; + + public SmartPhone(String operatingSystem, String brand, int yearRelease, double cost, double size){ + super(operatingSystem, brand, yearRelease, cost); + this.size = size; + newId++; + } + + public double getSize(){ + return size; + } + + @Override + public String toString(){ + String newline = System.lineSeparator(); + return super.toString() + + "Size: " + size + " inches" + newline; + } + +} + + diff --git a/classes-part-2/exercises/src/main/java/org/launchcode/Course.java b/classes-part-2/exercises/src/main/java/org/launchcode/Course.java index ca56bd799..c80090bba 100644 --- a/classes-part-2/exercises/src/main/java/org/launchcode/Course.java +++ b/classes-part-2/exercises/src/main/java/org/launchcode/Course.java @@ -1,17 +1,38 @@ package org.launchcode; +import org.w3c.dom.ls.LSOutput; + +import java.sql.SQLOutput; import java.util.ArrayList; +import java.util.Objects; public class Course { - private String topic; - private Teacher instructor; - private ArrayList enrolledStudents; + private String title; + private String instructor; + private int credits; + + public Course (String title, int credits, String instructor) { + this.title = title; + this.credits = credits; + this.instructor = instructor; + } + + public String toString(){ + return title + " Credits: " + credits + " Taught by: " + instructor; + } - // TODO: Add your custom 'toString' method here. Make sure it returns a well-formatted String rather than - // just the class fields. + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Course course = (Course) o; + return Objects.equals(title, course.title) && Objects.equals(instructor, course.instructor); + } + @Override + public int hashCode() { + return Objects.hash(title, instructor); + } - // TODO: Add your custom 'equals' method here. Consider which fields should match in order to call two - // Course objects equal. } diff --git a/classes-part-2/exercises/src/main/java/org/launchcode/Student.java b/classes-part-2/exercises/src/main/java/org/launchcode/Student.java index 7e368e66e..fea18c838 100644 --- a/classes-part-2/exercises/src/main/java/org/launchcode/Student.java +++ b/classes-part-2/exercises/src/main/java/org/launchcode/Student.java @@ -1,5 +1,8 @@ package org.launchcode; +import java.sql.SQLOutput; +import java.util.Objects; + public class Student { private static int nextStudentId = 1; @@ -30,20 +33,44 @@ public String studentInfo() { //TODO: Uncomment and complete the getGradeLevel method here: -// public String getGradeLevel() { -// // Determine the grade level of the student based on numberOfCredits -// } + public String getGradeLevel(int numberOfCredits) { + // Determine the grade level of the student based on numberOfCredits + if(this.numberOfCredits < 30) { + return "Freshman"; + } else if(this.numberOfCredits < 60) { + return "Sophomore"; + } else if(this.numberOfCredits < 90) { + return "Junior"; + } else { + return "Senior"; + } + } // TODO: Complete the addGrade method. public void addGrade(int courseCredits, double grade) { // Update the appropriate fields: numberOfCredits, gpa + double qualityScore = this.gpa * this.numberOfCredits; + qualityScore += courseCredits * grade; + this.numberOfCredits += courseCredits; + this.gpa = qualityScore/this.numberOfCredits; } - // TODO: Add your custom 'toString' method here. Make sure it returns a well-formatted String rather - // than just the class fields. + public String toString(){ + return String.format("%s is a %s with %d credits and a GPA of %.2f", this.name, this.getGradeLevel(this.numberOfCredits), this.getNumberOfCredits(), this.getGpa()); + } - // TODO: Add your custom 'equals' method here. Consider which fields should match in order to call two - // Student objects equal. + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Student student = (Student) o; + return studentId == student.studentId; + } + + @Override + public int hashCode() { + return Objects.hash(studentId); + } public String getName() { return name; @@ -79,11 +106,16 @@ private void setNumberOfCredits(int numberOfCredits) { public static void main(String[] args) { Student sally = new Student("Sally",1,1,4.0); + Student sal = new Student("Sal", 2, 3, 4); System.out.println("The Student class works! " + sally.getName() + " is a student!"); System.out.println(sally); sally.addGrade(12, 3.5); System.out.println(sally); sally.addGrade(25, 3.8); System.out.println(sally); + System.out.println(sally.equals(sal)); + Course trig = new Course("Trigonometry", 3, "Mater"); + System.out.println(trig.toString()); + } } \ No newline at end of file diff --git a/classes-part-2/studio/src/main/java/org/launchcode/Main.java b/classes-part-2/studio/src/main/java/org/launchcode/Main.java index a284b3822..5842dcd77 100644 --- a/classes-part-2/studio/src/main/java/org/launchcode/Main.java +++ b/classes-part-2/studio/src/main/java/org/launchcode/Main.java @@ -1,8 +1,95 @@ package org.launchcode; +import java.sql.SQLOutput; +import java.util.ArrayList; +import java.util.Date; + public class Main { + static Date date = new Date(); + static ArrayList list = new ArrayList<>(); + static String newItem; + static Menu menu = new Menu(date, list); + + + + public static void addFood(MenuItem aName) { + + if(list.contains(aName)){ + System.out.println("Item by that name already exist on the menu."); + } else { + list.add(aName); + } + } + + public static void removeFood(MenuItem aName){ + list.remove(aName); + System.out.println(aName.getDescription() + " was removed from the menu."); + } + + public static String oneItem(int num) { + MenuItem oneFood = null; + ArrayList foodArray = new ArrayList<>(); + for (MenuItem item : menu.getItems()){ + foodArray.add(item); + } + int selection = menu.getItems().size() - 1; + if(num < menu.getItems().size()) { + oneFood = foodArray.get(num); + if(oneFood.isNew()){ + newItem = "NEW" + " " + "Added " + menu.getLastUpdated(); + } else { + newItem = " "; + } + return "\n" + oneFood.getDescription() + " - $" + oneFood.getPrice() + "\n" + + oneFood.getCategory() + " " + newItem + "\n"; + } else { + return "You selected Number: " + num + ". There are not that many foods. Pick 0 - " + + selection; + } + } + + + public static void main(String[] args) { - // write your code here + MenuItem steak = new MenuItem( 40.00 ,"Steak with honeyGlaze", "Main Course", true ); + MenuItem iceCream = new MenuItem(5.00, "Ice Cream", "Dessert", false); + MenuItem stirFry = new MenuItem(14.00, "Stir Fry", "Main course", false); + MenuItem breadSticks = new MenuItem(2.00, "Break Sticks", "Appetizer", false); + MenuItem cheeseSticks = new MenuItem(3.00, "Cheese Sticks", "Appetizer", true); + + addFood(steak); + addFood(iceCream); + addFood(stirFry); + addFood(breadSticks); + addFood(cheeseSticks); + System.out.println("Trying to add MenuItem Steak a second time."); + addFood(steak); + + System.out.print("\nPrinting the full menu."); + for (MenuItem item : menu.getItems()) { + if(item.isNew()){ + newItem = "NEW" + " " + "Added " + menu.getLastUpdated(); + } else { + newItem = " "; + } + System.out.println("\n" + item.getDescription() + " - Price: " + "$" + item.getPrice() + "\n" + + "Category: " + item.getCategory() + " " + newItem + "\n"); + } + System.out.print("Printing the last time the menu was updated\n"); + System.out.println("Page last updated: " + menu.getLastUpdated()); + + System.out.println("Menus size " + menu.getItems().size()); + System.out.println(oneItem(4)); + + removeFood(cheeseSticks); + + System.out.println("Menu size " + menu.getItems().size()); + System.out.println(oneItem(4)); + System.out.println(oneItem(1)); + } + } + +// \ No newline at end of file diff --git a/classes-part-2/studio/src/main/java/org/launchcode/MenuItem.java b/classes-part-2/studio/src/main/java/org/launchcode/MenuItem.java index 22ba70e45..c2d76ad37 100644 --- a/classes-part-2/studio/src/main/java/org/launchcode/MenuItem.java +++ b/classes-part-2/studio/src/main/java/org/launchcode/MenuItem.java @@ -17,14 +17,28 @@ public void setPrice(double price) { this.price = price; } + public double getPrice() { + return price; + } + + public String getDescription() { + return description; + } + public void setDescription(String description) { this.description = description; } + public String getCategory() { + return category; + } public void setCategory(String category) { this.category = category; } + public boolean isNew() { + return isNew; + } public void setNew(boolean aNew) { isNew = aNew; } diff --git a/classes-part-one/exercises/src/main/java/Student.java b/classes-part-one/exercises/src/main/java/Student.java deleted file mode 100644 index d06997866..000000000 --- a/classes-part-one/exercises/src/main/java/Student.java +++ /dev/null @@ -1,10 +0,0 @@ -public class Student { - private String name; - private int studentId; - private int numberOfCredits = 0; - private double gpa = 0.0; - - // Drop your getters and setters below for the Student class. - // To instantiate the Student class, add your code to the main in the file, SchoolPractice. - -} diff --git a/classes-part-one/exercises/src/main/java/StudentPractice.java b/classes-part-one/exercises/src/main/java/StudentPractice.java deleted file mode 100644 index bb0c0eb7e..000000000 --- a/classes-part-one/exercises/src/main/java/StudentPractice.java +++ /dev/null @@ -1,5 +0,0 @@ -public class StudentPractice { - public static void main(String[] args){ - //insantiate your Student class below - } -} diff --git a/classes-part-one/exercises/src/main/java/org/launchcode/Course.java b/classes-part-one/exercises/src/main/java/org/launchcode/Course.java new file mode 100644 index 000000000..3bb9da016 --- /dev/null +++ b/classes-part-one/exercises/src/main/java/org/launchcode/Course.java @@ -0,0 +1,9 @@ +package org.launchcode; + +import java.util.ArrayList; + +public class Course { + private String topic; + private Teacher instructor; + private ArrayList enrolledStudents; +} diff --git a/classes-part-one/exercises/src/main/java/org/launchcode/Student.java b/classes-part-one/exercises/src/main/java/org/launchcode/Student.java new file mode 100644 index 000000000..85b043df3 --- /dev/null +++ b/classes-part-one/exercises/src/main/java/org/launchcode/Student.java @@ -0,0 +1,43 @@ +package org.launchcode; + +public class Student { + public static String name; + private int studentId; + private int numberOfCredits = 0; + private double gpa = 0.0; + + public Student(String name, int studentId, int numberOfCredits, double gpa) { + Student.name = name; + this.studentId = studentId; + this.numberOfCredits = numberOfCredits; + this.gpa = gpa; + } + + // Drop your getters and setters below for the org.launchcode.Student class. + // To instantiate the org.launchcode.Student class, add your code to the main in the file, SchoolPractice. + public String getName(){ + return name; + } + public int getStudentId() { + return studentId; + } + public int getNumberOfCredits(){ + return numberOfCredits; + } + public double getGpa(){ + return gpa; + } + + public static void setName(String aName){ + name = aName; + } + public void setStudentId(int aStudentId){ + studentId = aStudentId; + } + private void setNumberOfCredits(int aNumberOfCredits){ + numberOfCredits = aNumberOfCredits; + } + public void setGpa(double aGpa){ + gpa = aGpa; + } +} diff --git a/classes-part-one/exercises/src/main/java/org/launchcode/StudentPractice.java b/classes-part-one/exercises/src/main/java/org/launchcode/StudentPractice.java new file mode 100644 index 000000000..c06d00839 --- /dev/null +++ b/classes-part-one/exercises/src/main/java/org/launchcode/StudentPractice.java @@ -0,0 +1,13 @@ +package org.launchcode; + +import java.util.Arrays; + +public class StudentPractice { + + + public static void main(String[] args){ + Student student = new Student("Dustin", 12345, 1, 4.0); + System.out.println(student.getNumberOfCredits()); + + } +} diff --git a/classes-part-one/exercises/src/main/java/org/launchcode/Teacher.java b/classes-part-one/exercises/src/main/java/org/launchcode/Teacher.java new file mode 100644 index 000000000..bbebacaf1 --- /dev/null +++ b/classes-part-one/exercises/src/main/java/org/launchcode/Teacher.java @@ -0,0 +1,44 @@ +package org.launchcode; + +public class Teacher { + private String firstName; + private String lastName; + private String subject; + private int yearsTeaching; + +// public Teacher (String firstName, String lastName, String subject, int yearsTeaching){ +// this.firstName = firstName; +// this.lastName = lastName; +// this.subject = subject; +// this.yearsTeaching = yearsTeaching; +// } + + public String getFirstName(){ + return firstName; + } + public String getLastName(){ + return lastName; + } + public String getSubject(){ + return subject; + } + public int getYearsTeaching(){ + return yearsTeaching; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public void setSubject(String subject) { + this.subject = subject; + } + + public void setYearsTeaching(int yearsTeaching) { + this.yearsTeaching = yearsTeaching; + } +} diff --git a/classes-part-one/studio/restaurant-menu/build.gradle b/classes-part-one/studio/restaurant-menu/build.gradle index 89842b458..cecc5fd5f 100644 --- a/classes-part-one/studio/restaurant-menu/build.gradle +++ b/classes-part-one/studio/restaurant-menu/build.gradle @@ -10,6 +10,9 @@ repositories { } dependencies { + implementation project(path: ':') + implementation project(path: ':') + implementation project(path: ':') testImplementation platform('org.junit:junit-bom:5.9.1') testImplementation 'org.junit.jupiter:junit-jupiter' } 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 deleted file mode 100644 index cad5849f1..000000000 --- a/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/Main.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.launchcode; - -public class Main { - - public static void main(String[] args) { - // write your code here - } -} 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 index fc892ffe9..990aa7709 100644 --- 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 @@ -3,28 +3,29 @@ import java.util.ArrayList; import java.util.Date; + public class Menu { private Date lastUpdated; private ArrayList items; - public Menu(Date d, ArrayList i) { - this.lastUpdated = d; - this.items = i; - } - - public void setLastUpdated(Date lastUpdated) { + public Menu(Date lastUpdated, ArrayList items) { this.lastUpdated = lastUpdated; - } - - public void setItems(ArrayList items) { this.items = items; } public Date getLastUpdated() { return lastUpdated; } + public void setLastUpdated(Date lastUpdated) { + this.lastUpdated = lastUpdated; + } public ArrayList getItems() { return items; } + public void setItems(ArrayList items) { + this.items = 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 index 776c2764d..d6a5d3bb5 100644 --- 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 @@ -1,31 +1,32 @@ package org.launchcode; public class MenuItem { + private double price; private String description; private String category; private boolean isNew; - public MenuItem(double p, String d, String c, boolean iN) { - this.price = p; - this.description = d; - this.category = c; - this.isNew = iN; + public MenuItem(double price, String description, String category, boolean isNew) { + this.price = price; + this.description = description; + this.category = category; + this.isNew = isNew; } + public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } + public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } - public void setCategory(String category) { - this.category = category; - } + public String getCategory() { return category; } + public void setCategory(String category) { this.category = category; } - public void setNew(boolean aNew) { - isNew = aNew; - } + public boolean isNew() { return isNew; } + public void setNew(boolean aNew) { isNew = aNew; } } diff --git a/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/Restaurant.java b/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/Restaurant.java new file mode 100644 index 000000000..345bc1edd --- /dev/null +++ b/classes-part-one/studio/restaurant-menu/src/main/java/org/launchcode/Restaurant.java @@ -0,0 +1,28 @@ +package org.launchcode; + + +import java.util.ArrayList; +import java.util.Date; + +public class Restaurant { + + public static void main(String[] args) { + Date date = new Date(); + ArrayList list = new ArrayList<>(); + + Menu menu = new Menu(date, list); + + MenuItem steak = new MenuItem(40.00, "steak", "Main course", true); + MenuItem iceCream = new MenuItem(5.00, "ice cream", "Dessert", false); + MenuItem stirFry = new MenuItem(14.00, "Stir Fry", "Main course", false); + MenuItem breadSticks = new MenuItem(2.00, "Break Sticks", "Appetizer", false); + list.add(steak); + list.add(iceCream); + list.add(stirFry); + list.add(breadSticks); + + + System.out.println(steak.getCategory()); + + } +} diff --git a/control-flow-and-collections/exercises/collections-exercises/pom.xml b/control-flow-and-collections/exercises/collections-exercises/pom.xml new file mode 100644 index 000000000..eaee8bc3a --- /dev/null +++ b/control-flow-and-collections/exercises/collections-exercises/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + org.example + collections-exercises + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + \ No newline at end of file diff --git a/control-flow-and-collections/exercises/collections-exercises/src/main/java/org/launchcode/ArrayPractice.java b/control-flow-and-collections/exercises/collections-exercises/src/main/java/org/launchcode/ArrayPractice.java new file mode 100644 index 000000000..f14e1bde9 --- /dev/null +++ b/control-flow-and-collections/exercises/collections-exercises/src/main/java/org/launchcode/ArrayPractice.java @@ -0,0 +1,110 @@ +package org.launchcode; +import java.util.ArrayList; +import java.util.Scanner; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +public class ArrayPractice { + public static void main(String[] args) { +// Array Practice +// Steps 1 and 2 + int[] integerArray = {1, 1, 2, 3, 5, 8}; + for (int integer : integerArray) { + System.out.println(integer); + int odd = integer % 2; + if (odd == 1){ + System.out.println(integer); + } + } +// Steps 3, 4, 5 + String str = "I would not, could not, in a box. I would not, could not with a fox. " + + "I will not eat them in a house. I will not eat them with a mouse."; + String[] strArray = str.split("\\."); + System.out.println(Arrays.toString(strArray)); + +// ArrayList Practice +// Step 1 + ArrayList nums = new ArrayList<>(); + nums.add(1); + nums.add(2); + nums.add(3); + nums.add(4); + nums.add(5); + nums.add(6); + nums.add(7); + nums.add(8); + nums.add(9); + nums.add(10); + + int sum = 0; + for (int number : nums){ + if (number % 2 == 0){ + sum += number; + } + } + System.out.println(sum); +// Step 2 and 3 + ArrayList words = new ArrayList<>(); + words.add("I"); + words.add("do"); + words.add("not"); + words.add("like"); + words.add("apple"); + + Scanner input = new Scanner(System.in); +// System.out.println("Enter length of word 1 - 5: "); +// int userChoice = input.nextInt(); +// for (String word : words){ +// if(word.length() == userChoice){ +// System.out.println(word); +// } +// } +// Step 4 +// System.out.println("Pick a number between 1 and 6"); +// int userInput = input.nextInt(); +// String[] strSplit = str.split(" "); +// +// ArrayList strList = new ArrayList<>(Arrays.asList(strSplit)); +// for (String s : strList ){ +// if(s.length() == userInput){ +// System.out.println(s); +// } +// } + +// HashMap Practice +// Step 1 + + HashMap classRoster = new HashMap<>(); + String newStudent; + + System.out.println("Enter your students (or ENTER to finish):"); + + do { + System.out.println("Student: "); + newStudent = input.nextLine(); + + if (!newStudent.equals("")) { + System.out.print("ID: "); + Integer newID = input.nextInt(); + classRoster.put(newID, newStudent); + + input.nextLine(); + } + } while(!newStudent.equals("")); + + input.close(); + + System.out.println("\nClass roster:"); + + for (Map.Entry student : classRoster.entrySet()) { + System.out.println(student.getValue() + "'s ID: " + student.getKey()); + } + + System.out.println("Number of students in roster: " + classRoster.size()); + + input.close(); + } +} +// to get one of the practices to work you have to comment out the other practice to void the input. +// Not sure why at this time 8/21/2023 \ No newline at end of file diff --git a/control-flow-and-collections/studio/counting-characters/pom.xml b/control-flow-and-collections/studio/counting-characters/pom.xml new file mode 100644 index 000000000..792c4d470 --- /dev/null +++ b/control-flow-and-collections/studio/counting-characters/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + org.example + counting-characters + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + \ No newline at end of file diff --git a/control-flow-and-collections/studio/counting-characters/src/main/java/org/launchcode/CountingCharacters.java b/control-flow-and-collections/studio/counting-characters/src/main/java/org/launchcode/CountingCharacters.java new file mode 100644 index 000000000..a68efe1f6 --- /dev/null +++ b/control-flow-and-collections/studio/counting-characters/src/main/java/org/launchcode/CountingCharacters.java @@ -0,0 +1,61 @@ +package org.launchcode; + + + +import java.util.HashMap; +import java.util.Map; +import java.util.Scanner; + +public class CountingCharacters { + public static void main(String[] args) { + + String hiddenFigures = "If the product of two terms is zero then common sense says at least " + + "one of the two terms has to be zero to start with. So if you move all the " + + "terms over to one side, you can put the quadratics into a form that can " + + "be factored allowing that side of the equation to equal zero. " + + "Once you’ve done that, it’s pretty straightforward from there."; + + char[] charactersInString = hiddenFigures.toCharArray(); + HashMap character = new HashMap<>(); + + for (int i = 0; i < charactersInString.length; i++){ + Integer intCounter = 0; + char charPlaceholder = charactersInString[i]; + character.put(charPlaceholder, intCounter); + for(char c : charactersInString){ + if(charPlaceholder == c){ + character.put(charPlaceholder, character.get(charPlaceholder)+1); + + } + } + } + + for (Map.Entry c : character.entrySet()) { + System.out.println(c.getKey() + ": " + c.getValue()); + } + + HashMap userCharacter = new HashMap<>(); + Scanner input = new Scanner(System.in); + System.out.println("Enter a phrase to count letters: "); + String userString = input.nextLine(); + char[] userChar = userString.toLowerCase().toCharArray(); + + + for (char value : userChar){ + if (Character.isLetter(value)){ + Integer counter = 0; + userCharacter.put(value, counter); + for(char c : userChar){ + if(value == c){ + userCharacter.put(value, userCharacter.get(value)+1); + } + } + } + } + for (Map.Entry c : userCharacter.entrySet()) { + System.out.println(c.getKey() + ": " + c.getValue()); + } + + + } +} \ No newline at end of file diff --git a/control-flow-and-collections/studio/counting-characters/target/classes/org/launchcode/CountingCharacters.class b/control-flow-and-collections/studio/counting-characters/target/classes/org/launchcode/CountingCharacters.class new file mode 100644 index 000000000..2b50399c1 Binary files /dev/null and b/control-flow-and-collections/studio/counting-characters/target/classes/org/launchcode/CountingCharacters.class differ diff --git a/datatypes/datatypes-exercises/src/main/java/org/launchcode/AlicesAdventures.java b/datatypes/datatypes-exercises/src/main/java/org/launchcode/AlicesAdventures.java new file mode 100644 index 000000000..840fc9309 --- /dev/null +++ b/datatypes/datatypes-exercises/src/main/java/org/launchcode/AlicesAdventures.java @@ -0,0 +1,31 @@ +package org.launchcode; + +import java.util.Scanner; +public class AlicesAdventures { + public static void main(String[] arg){ + Scanner input = new Scanner(System.in); + String firstLine = "Alice was beginning to get very tired of sitting by her sister on the " + + "bank, and of having nothing to do: once or twice she had peeped into the book " + + "her sister was reading, but it had no pictures or conversations in it, ‘and " + + "what is the use of a book,’ thought Alice ‘without pictures or conversation?’"; + System.out.println("What term would you like to find: "); + String searchTerm = input.next().toLowerCase(); + String lowerCaseFirstLine = firstLine.toLowerCase(); + + System.out.println(lowerCaseFirstLine.contains(searchTerm)); + + + if (lowerCaseFirstLine.contains(searchTerm)){ + Integer startOfSearchTerm = lowerCaseFirstLine.indexOf(searchTerm); + Integer lengthOfSearchTerm = searchTerm.length(); + System.out.println(startOfSearchTerm); + System.out.println(lengthOfSearchTerm); + String newFirstLine = firstLine.replace(searchTerm + " ", ""); +// String newFirstLine = lowerCaseFirstLine.substring(0, lowerCaseFirstLine.indexOf(searchTerm)) + lowerCaseFirstLine.substring(lowerCaseFirstLine.indexOf(searchTerm) + searchTerm.length() + 1); + System.out.println(newFirstLine); + } + + + input.close(); + } +} 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..89aa523dd --- /dev/null +++ b/datatypes/datatypes-exercises/src/main/java/org/launchcode/HelloWorld.java @@ -0,0 +1,14 @@ +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.nextLine(); + System.out.println("Hello " + name); + input.close(); + } +} 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..9f4da8a80 --- /dev/null +++ b/datatypes/datatypes-exercises/src/main/java/org/launchcode/InputOutput.java @@ -0,0 +1,4 @@ +package org.launchcode; + +public class InputOutput { +} diff --git a/datatypes/datatypes-exercises/src/main/java/org/launchcode/MilesPerGallon.java b/datatypes/datatypes-exercises/src/main/java/org/launchcode/MilesPerGallon.java new file mode 100644 index 000000000..b0ae70237 --- /dev/null +++ b/datatypes/datatypes-exercises/src/main/java/org/launchcode/MilesPerGallon.java @@ -0,0 +1,17 @@ +package org.launchcode; +import java.util.Scanner; +public class MilesPerGallon { + public static void main(String[] arg){ + Scanner input = new Scanner(System.in); + System.out.println("How many miles have you driven: "); + Double miles = input.nextDouble(); + + System.out.println("How many gallons of gas did you use: "); + Double gallons = input.nextDouble(); + + Double milesPerGallon = miles / gallons; + + System.out.println("Miles per Gallon: " + milesPerGallon); + input.close(); + } +} diff --git a/datatypes/datatypes-exercises/src/main/java/org/launchcode/RectangleArea.java b/datatypes/datatypes-exercises/src/main/java/org/launchcode/RectangleArea.java new file mode 100644 index 000000000..7c5d3fd39 --- /dev/null +++ b/datatypes/datatypes-exercises/src/main/java/org/launchcode/RectangleArea.java @@ -0,0 +1,19 @@ +package org.launchcode; + +import java.util.Scanner; + +public class RectangleArea { + public static void main(String[] arg) { + Scanner input = new Scanner(System.in); + System.out.println("What is the length of the rectangle: "); + int length = input.nextInt(); + + System.out.println("What is the width of the rectangle: "); + int width = input.nextInt(); + + int area = length * width; + + System.out.println("Length: " + length + "\nWdith: " + width + "\nArea: " + area ); + input.close(); + } +} diff --git a/datatypes/datatypes-studio/src/main/java/org/launchcode/Area.java b/datatypes/datatypes-studio/src/main/java/org/launchcode/Area.java new file mode 100644 index 000000000..fc69ff272 --- /dev/null +++ b/datatypes/datatypes-studio/src/main/java/org/launchcode/Area.java @@ -0,0 +1,31 @@ +package org.launchcode; +import studios.areaofacircle.Circle; + +import java.util.Scanner; + + +public class Area { + public static void main(String[] arg) { + Double radius; + Scanner input = new Scanner(System.in); + System.out.println("Enter a radius: "); + + try { + radius = input.nextDouble(); + while (radius < 0) { + System.out.println("Invalid input: Please enter a positive radius: "); + radius = input.nextDouble(); + } + + Double area = Circle.getArea(radius); + System.out.println(radius); + System.out.println("The area of a circle of a radius " + radius + " is: " + area); + + } catch (Exception e) { + System.out.println("Enter a numbered radius: Please start over"); + } + + + input.close(); + } +} diff --git a/datatypes/datatypes-studio/src/main/java/studios/areaofacircle/Circle.java b/datatypes/datatypes-studio/src/main/java/studios/areaofacircle/Circle.java new file mode 100644 index 000000000..aac4cfe88 --- /dev/null +++ b/datatypes/datatypes-studio/src/main/java/studios/areaofacircle/Circle.java @@ -0,0 +1,7 @@ +package studios.areaofacircle; + +public class Circle { + public static Double getArea(Double radius) { + return 3.14 * radius * radius; + } +} diff --git a/exceptions/chapter-example/temperature-example/src/main/java/org/launchcode/Temperature.java b/exceptions/chapter-example/temperature-example/src/main/java/org/launchcode/Temperature.java index 8eddaf754..f982a750f 100644 --- a/exceptions/chapter-example/temperature-example/src/main/java/org/launchcode/Temperature.java +++ b/exceptions/chapter-example/temperature-example/src/main/java/org/launchcode/Temperature.java @@ -12,7 +12,11 @@ public void setFahrenheit(double aFahrenheit) { double absoluteZeroFahrenheit = -459.67; if (aFahrenheit < absoluteZeroFahrenheit) { - System.out.println("Value is below absolute zero"); + try{ + throw new TemperatureException("That temperature is too low!"); + } catch (TemperatureException e){ + e.printStackTrace(); + } } fahrenheit = aFahrenheit; diff --git a/exceptions/chapter-example/temperature-example/src/main/java/org/launchcode/TemperatureException.java b/exceptions/chapter-example/temperature-example/src/main/java/org/launchcode/TemperatureException.java index b581dc473..02b19e539 100644 --- a/exceptions/chapter-example/temperature-example/src/main/java/org/launchcode/TemperatureException.java +++ b/exceptions/chapter-example/temperature-example/src/main/java/org/launchcode/TemperatureException.java @@ -1,5 +1,8 @@ package org.launchcode; -public class TemperatureException { - // Write code here! +public class TemperatureException extends Exception { + + public TemperatureException(String message){ + super(message); + } } diff --git a/exceptions/exercises/student-grade-exercises/src/main/java/org/launchcode/ArithmeticException.java b/exceptions/exercises/student-grade-exercises/src/main/java/org/launchcode/ArithmeticException.java new file mode 100644 index 000000000..9b617d71b --- /dev/null +++ b/exceptions/exercises/student-grade-exercises/src/main/java/org/launchcode/ArithmeticException.java @@ -0,0 +1,8 @@ +package org.launchcode; + +public class ArithmeticException extends Exception{ + + public ArithmeticException(String message){ + super(message); + } +} diff --git a/exceptions/exercises/student-grade-exercises/src/main/java/org/launchcode/FileExtensionException.java b/exceptions/exercises/student-grade-exercises/src/main/java/org/launchcode/FileExtensionException.java new file mode 100644 index 000000000..c412671b7 --- /dev/null +++ b/exceptions/exercises/student-grade-exercises/src/main/java/org/launchcode/FileExtensionException.java @@ -0,0 +1,7 @@ +package org.launchcode; + +public class FileExtensionException extends Exception { + public FileExtensionException(String message){ + super(message); + } +} diff --git a/exceptions/exercises/student-grade-exercises/src/main/java/org/launchcode/Main.java b/exceptions/exercises/student-grade-exercises/src/main/java/org/launchcode/Main.java index 4971cbde0..ec63ea4a0 100644 --- a/exceptions/exercises/student-grade-exercises/src/main/java/org/launchcode/Main.java +++ b/exceptions/exercises/student-grade-exercises/src/main/java/org/launchcode/Main.java @@ -5,23 +5,49 @@ public class Main { public static void main(String[] args) { // Test out your Divide() function! - + Divide(42, 8); HashMap studentFiles = new HashMap<>(); studentFiles.put("Carl", "Program.java"); studentFiles.put("Brad", ""); - studentFiles.put("Elizabeth", "MyCode.java"); - studentFiles.put("Stefanie", "CoolProgram.java"); + studentFiles.put("Elizabeth", ""); + studentFiles.put("Stefanie", "CoolProgram.js"); // Test out your CheckFileExtension() function! + System.out.println(CheckFileExtension(studentFiles.get("Carl"))); + System.out.println(CheckFileExtension(studentFiles.get("Brad"))); + System.out.println(CheckFileExtension(studentFiles.get("Elizabeth"))); + System.out.println(CheckFileExtension(studentFiles.get("Stefanie"))); } public static void Divide(int x, int y) { - // Write code here! + if(y == 0){ + try{ + throw new ArithmeticException("Can't divide by 0"); + }catch (ArithmeticException e){ + e.printStackTrace(); + } + } + int result = x/y; + System.out.println(result); } - public static int CheckFileExtension(String fileName) - { - // Write code here! + public static int CheckFileExtension(String fileName) { + int score = 0; + if (fileName.contains(".java")){ + score = 1; + } + if (!fileName.contains(".java")){ + score = 0; + } + if (fileName.isBlank()){ + try { + throw new FileExtensionException("No file was uploaded for"); + } catch (FileExtensionException e){ + e.printStackTrace(); + score = -1; + } + } + return score; } } \ No newline at end of file diff --git a/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/Case.java b/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/Case.java index 61e66722a..0d1a6027e 100644 --- a/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/Case.java +++ b/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/Case.java @@ -6,6 +6,7 @@ public class Case { private ArrayList flavors = new ArrayList<>(); private ArrayList cones = new ArrayList<>(); + private ArrayList toppings = new ArrayList<>(); public Case(){ Cone cone1 = new Cone("Waffle", 1.25, new ArrayList<>(Arrays.asList( "gluten"))); @@ -27,6 +28,16 @@ public Case(){ flavors.add(flavor3); flavors.add(flavor4); flavors.add(flavor5); + + Toppings toppings1 = new Toppings("Sprinkles", 0.25, new ArrayList<>(Arrays.asList("none"))); + Toppings toppings2 = new Toppings("Cherries", 0.50, new ArrayList<>(Arrays.asList("cherries"))); + Toppings toppings3 = new Toppings("Bananas", 0.10, new ArrayList<>(Arrays.asList("bananas"))); + Toppings toppings4 = new Toppings("Chocolate Syrup", 0.12, new ArrayList<>(Arrays.asList("dairy"))); + toppings.add(toppings1); + toppings.add(toppings2); + toppings.add(toppings3); + toppings.add(toppings4); + } public ArrayList getFlavors() { @@ -37,6 +48,10 @@ public ArrayList getCones() { return cones; } + public ArrayList getToppings() { + return toppings; + } + public void setFlavors(ArrayList flavors) { this.flavors = flavors; } @@ -44,4 +59,8 @@ public void setFlavors(ArrayList flavors) { public void setCones(ArrayList cones) { this.cones = cones; } + + public void setToppings(ArrayList toppings) { + this.toppings = toppings; + } } 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..4b9fb4c06 --- /dev/null +++ b/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/ConeComparator.java @@ -0,0 +1,18 @@ +package org.launchcode; + +import java.util.Comparator; + +public class ConeComparator implements Comparator { + + @Override + public int compare(Cone cone1, Cone cone2) { + if(cone1.getCost() - cone2.getCost() < 0){ + return -1; + } else if (cone1.getCost() - cone2.getCost() > 0) { + return 1; + } else { + return 0; + } + } + +} 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..f6d09333f --- /dev/null +++ b/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/FlavorComparator.java @@ -0,0 +1,18 @@ +package org.launchcode; + +import java.util.Comparator; + +public class FlavorComparator implements Comparator{ + + @Override + public int compare(Flavor flavor1, Flavor flavor2){ + if (flavor1.getAllergens().size() < (flavor2.getAllergens().size())){ + return -1; + } else if(flavor1.getAllergens().size() > (flavor2.getAllergens().size())){ + return 1; + } else { + return 0; + } + } + +} 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..17917affb 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,17 +1,26 @@ 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(); + ArrayList toppings = menu.getToppings(); - // TODO: Use a Comparator class to sort the 'flavors' array alphabetically by the 'name' field. + // TODO: Use a Comparator class to sort the 'flavors' array alphabetically by the 'name' field. + flavors.sort(new FlavorComparator()); // TODO: Use a Comparator class to sort the 'cones' array in increasing order by the 'cost' field. - + cones.sort(new ConeComparator()); // TODO: Print the 'flavors' and 'cones' lists (in a clear manner) to verify the sorting. + System.out.println(flavors); + System.out.println(cones); + + //TODO: Compare class to sort the 'toppings' array by alphabetical order of name field. + toppings.sort(new ToppingsComparator()); + System.out.println(toppings); } } \ No newline at end of file diff --git a/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/Toppings.java b/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/Toppings.java new file mode 100644 index 000000000..bc4fb5432 --- /dev/null +++ b/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/Toppings.java @@ -0,0 +1,11 @@ +package org.launchcode; + +import java.util.ArrayList; + +public class Toppings extends Ingredient{ + + public Toppings(String aName, double aCost, ArrayList someAllergens) { + super(aName, aCost, someAllergens); + + } +} diff --git a/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/ToppingsComparator.java b/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/ToppingsComparator.java new file mode 100644 index 000000000..af1ce9786 --- /dev/null +++ b/interfaces/exercises/ice-cream-exercises/src/main/java/org/launchcode/ToppingsComparator.java @@ -0,0 +1,11 @@ +package org.launchcode; + +import java.util.Comparator; + +public class ToppingsComparator implements Comparator { + + @Override + public int compare(Toppings toppings1, Toppings toppings2) { + return toppings1.getName().compareTo(toppings2.getName()); + } +} 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..f9cb2fdab --- /dev/null +++ b/interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/BaseDisc.java @@ -0,0 +1,40 @@ +package org.launchcode; + + +public abstract class BaseDisc { + + private final String name; + private int capacity; + + private final String diskType; + + public BaseDisc(String name, int capacity, String diskType) { + this.name = name; + this.capacity = capacity; + + this.diskType = diskType; + } + + public String getName() { + return name; + } + + public int getCapacity() { + return capacity; + } + + public void setCapacity(int capacity) { + this.capacity = capacity; + } + + + public String getDiskType() { + return diskType; + } + + @Override + public String toString(){ + String newline = System.lineSeparator(); + return newline + name + " is a " + diskType + " has the capacity of " + capacity; + } +} 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..72cc10f5a 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,21 @@ package org.launchcode; -public class CD { - // TODO: Implement your custom interface. +public class CD extends BaseDisc implements OpticalDisc { + + private static final int spinSpeed = 23000; + + public CD(String name, int capacity, String diskType) { + super(name, capacity, diskType); + } + + @Override + public String toString(){ + return super.toString() + " MB."; + } + + @Override + public void spinDisc() { + System.out.println("The spin speed of " + getDiskType() + " is " + spinSpeed + " rpm."); + } - // TODO: Determine which fields, methods, and constructors can be extended from the base class and which ones - // need to be declared separately. } 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..288d5ef2d 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,20 @@ package org.launchcode; -public class DVD { - // TODO: Implement your custom interface. +public class DVD extends BaseDisc implements OpticalDisc{ - // TODO: Determine which fields, methods, and constructors can be extended from the base class and which ones - // need to be declared separately. + private static final int spinSpeed = 32000; + + public DVD(String name, int capacity, String diskType) { + super(name, capacity, diskType); + } + + @Override + public String toString(){ + return super.toString() + " GB."; + } + + @Override + public void spinDisc() { + System.out.println("The spin speed of a " + getDiskType() + " is " + spinSpeed + " 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..1e581dbc0 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 @@ -4,7 +4,17 @@ public class Main { public static void main(String[] args) { // TODO: Declare and initialize a CD and a DVD object. - + DVD dvd1 = new DVD("Matrix", 5, "DVD"); + DVD dvd2 = new DVD("Hackers", 2, "DVD"); + CD cd1 = new CD("Encanto Soundtrack", 200, "CD"); + CD cd2 = new CD("Frozen Soundtrack", 400, "CD"); // TODO: Call each CD and DVD method to verify that they work as expected. + + System.out.println(cd1); + System.out.println(dvd1); + cd1.spinDisc(); + dvd2.spinDisc(); + + } } \ 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..ebd7eca4e --- /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 { + + static final String shape = "Circle"; + + void spinDisc(); + +} diff --git a/studioChp7/.gitignore b/studioChp7/.gitignore new file mode 100644 index 000000000..5ff6309b7 --- /dev/null +++ b/studioChp7/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/studioChp7/pom.xml b/studioChp7/pom.xml new file mode 100644 index 000000000..7ceb2a347 --- /dev/null +++ b/studioChp7/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + org.example + studioChp7 + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + \ No newline at end of file diff --git a/studioChp7/src/main/java/org/studioCh7/Checkbox.java b/studioChp7/src/main/java/org/studioCh7/Checkbox.java new file mode 100644 index 000000000..a7f03f59e --- /dev/null +++ b/studioChp7/src/main/java/org/studioCh7/Checkbox.java @@ -0,0 +1,27 @@ +package org.studioCh7; + +public class Checkbox extends Question{ + + public Checkbox(String question, Choices[] choiceArray) { + super(question, choiceArray); + setMaxResponses(getNumCorrect()); + } + + @Override + public String toString() { + String newline = System.lineSeparator(); + return newline + "CHOOSE ONE OR MORE:" + newline + + getQuestion() + newline + + getFormattedChoices(); + } + + public int getNumCorrect() { + int numCorrect = 0; + for (Choices choice : getChoiceMap().values()) { + if (choice.isCorrect()){ + numCorrect++; + } + } + return numCorrect > 0 ? numCorrect : getChoiceMap().size(); + } +} diff --git a/studioChp7/src/main/java/org/studioCh7/Choices.java b/studioChp7/src/main/java/org/studioCh7/Choices.java new file mode 100644 index 000000000..60f6707f0 --- /dev/null +++ b/studioChp7/src/main/java/org/studioCh7/Choices.java @@ -0,0 +1,23 @@ +package org.studioCh7; + +public class Choices { + private final String content; + private final boolean correct; + + public Choices(String content, boolean correct) { + this.content = content; + this.correct = correct; + } + + public Choices(String content){ + this(content, false); + } + + public String getContent() { + return content; + } + + public boolean isCorrect() { + return correct; + } +} diff --git a/studioChp7/src/main/java/org/studioCh7/LinearScale.java b/studioChp7/src/main/java/org/studioCh7/LinearScale.java new file mode 100644 index 000000000..a844c9a01 --- /dev/null +++ b/studioChp7/src/main/java/org/studioCh7/LinearScale.java @@ -0,0 +1,32 @@ +package org.studioCh7; + +public class LinearScale extends Question{ + private final int highestNum; + + public LinearScale(String question, int highestNum) { + super(question); + this.highestNum = highestNum; + } + + public int getHighestNum() { + return highestNum; + } + + @Override + public String toString() { + String newline = System.lineSeparator(); + return newline + getQuestion() + newline + + "Please enter a number from 1 to " + highestNum + ":" + newline; + } + + public boolean isInvalid(String resp){ + try { + int respInt = Integer.parseInt(resp); + return respInt <= 0 || respInt > highestNum; + } catch (NumberFormatException e){ + return true; + } + + } + +} diff --git a/studioChp7/src/main/java/org/studioCh7/MultipleChoice.java b/studioChp7/src/main/java/org/studioCh7/MultipleChoice.java new file mode 100644 index 000000000..bf7cfa474 --- /dev/null +++ b/studioChp7/src/main/java/org/studioCh7/MultipleChoice.java @@ -0,0 +1,18 @@ +package org.studioCh7; + + + +public class MultipleChoice extends Question{ + + public MultipleChoice(String question, Choices[] choiceArray) { + super(question, choiceArray); + } + + @Override + public String toString(){ + String newline = System.lineSeparator(); + return newline+ "CHOOSE ONE:" + newline + + getQuestion() + newline + + getFormattedChoices(); + } +} diff --git a/studioChp7/src/main/java/org/studioCh7/Paragraph.java b/studioChp7/src/main/java/org/studioCh7/Paragraph.java new file mode 100644 index 000000000..b33be2f06 --- /dev/null +++ b/studioChp7/src/main/java/org/studioCh7/Paragraph.java @@ -0,0 +1,23 @@ +package org.studioCh7; + +public class Paragraph extends Question{ + + + public Paragraph(String question) { + super(question); + } + + @Override + public String toString() { + String newline = System.lineSeparator(); + return newline + getQuestion() + newline + + "Please enter a response (500 characters max):" + newline; + } + + @Override + public boolean isInvalid(String resp){ + return resp.length() >= 500; + } + + +} diff --git a/studioChp7/src/main/java/org/studioCh7/Question.java b/studioChp7/src/main/java/org/studioCh7/Question.java new file mode 100644 index 000000000..fc3aed96b --- /dev/null +++ b/studioChp7/src/main/java/org/studioCh7/Question.java @@ -0,0 +1,71 @@ +package org.studioCh7; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; + +public abstract class Question { + + private final String question; + private final HashMap choiceMap = new HashMap<>(); + private int maxResponses = 1; + + public Question(String question, Choices[] choiceArray) { + this.question = question; + createRandomizedChoiceMap(choiceArray); + + } + + public Question(String question){ + this.question = question; + } + + public String getQuestion() { + return question; + } + + public HashMap getChoiceMap() { + return choiceMap; + } + + public int getMaxResponses() { + return maxResponses; + } + + public void setMaxResponses(int maxResponses) { + this.maxResponses = maxResponses; + } + + @Override + public abstract String toString(); + + void createRandomizedChoiceMap(Choices[] choiceArray) { + ArrayList choiceList = new ArrayList<>(); + Collections.addAll(choiceList, choiceArray); + Collections.shuffle(choiceList); + for (int i =0; i < choiceList.size(); i++){ + choiceMap.put(i+1, choiceList.get(i)); + } + } + + String getFormattedChoices(){ + StringBuilder formattedChoices = new StringBuilder(); + String newline = System.lineSeparator(); + for(int choiceNum : choiceMap.keySet()){ + String choice = "\t" + choiceNum + " - " + choiceMap.get(choiceNum).getContent() + newline; + formattedChoices.append(choice); + } + return formattedChoices.toString(); + } + + + public boolean isInvalid(String resp){ + try { + int respInt = Integer.parseInt(resp); + return respInt <= 0 || respInt > choiceMap.size(); + } catch (NumberFormatException e){ + return true; + } + + } +} diff --git a/studioChp7/src/main/java/org/studioCh7/Quiz.java b/studioChp7/src/main/java/org/studioCh7/Quiz.java new file mode 100644 index 000000000..72a785af9 --- /dev/null +++ b/studioChp7/src/main/java/org/studioCh7/Quiz.java @@ -0,0 +1,68 @@ +package org.studioCh7; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Scanner; + +public class Quiz { + private final ArrayList questions = new ArrayList<>(); + + private int numCorrect = 0; + + //default constructor is sufficient + + public ArrayList getQuestions() { + return questions; + } + + public int getNumCorrect() { + return numCorrect; + } + + public void addQuestions(Question[] questionArray) { + Collections.addAll(questions, questionArray); + } + + public void run(){ + Scanner input = new Scanner(System.in); + Collections.shuffle(questions); + + + for (Question question : questions){ + System.out.println(question); + + ArrayList userResponses = new ArrayList<>(); + int i = 0; + while (i < question.getMaxResponses()){ + String userResponse; + + do { + System.out.println("Please enter a number: "); + userResponse = input.nextLine(); + } while (question.isInvalid(userResponse)); + + int userRespNum = Integer.parseInt(userResponse); + if(userResponses.contains(userRespNum)){ + System.out.println("You already got that one!"); + } else if (!question.getChoiceMap().get(userRespNum).isCorrect()){ + System.out.println("Sorry, the correct answer was: "); + for (Choices choice : question.getChoiceMap().values()){ + if (choice.isCorrect()){ + System.out.println(choice.getContent()); + } + } + break; + } else { + System.out.println("Correct!"); + userResponses.add(userRespNum); + if(i == question.getMaxResponses() - 1){ + numCorrect++; + } + i++; + } + + } + } + input.close(); + } +} diff --git a/studioChp7/src/main/java/org/studioCh7/QuizRunner.java b/studioChp7/src/main/java/org/studioCh7/QuizRunner.java new file mode 100644 index 000000000..df2bdf8a4 --- /dev/null +++ b/studioChp7/src/main/java/org/studioCh7/QuizRunner.java @@ -0,0 +1,48 @@ +package org.studioCh7; + +public class QuizRunner { + + private static final Quiz quiz = new Quiz(); + + public static void main(String[] args){ + + String q1 = "Which of the following are books by Jane Austen?"; + Choices[] q1Choices = new Choices[]{ + new Choices("Jane Eyre"), + new Choices("Pride and Prejudice", true), + new Choices("Lives and Daughters"), + new Choices("Mansfield Park", true) + + }; + Checkbox question1 = new Checkbox(q1, q1Choices); + + String q2 = "The most-published author of all time is Agatha Christie."; + Choices[] q2Choices = new Choices[]{ + new Choices("True", true), + new Choices("False") + }; + TrueFalse question2 = new TrueFalse(q2, q2Choices); + + String q3 = "Which Poem did history-making poet Amanda Gorman recite at the U.S. presidential inaugration in 2021?"; + Choices[] q3Choices = new Choices[]{ + new Choices("The Hill We Climb", true), + new Choices("The Miracle of Morning"), + new Choices("We Rise"), + new Choices("New Day's Lyric") + }; + MultipleChoice question3 = new MultipleChoice(q3, q3Choices); + + //ADD QUESTIONS TO QUIZ + quiz.addQuestions(new Question[] { question1, question2, question3 }); + + + //Interact with the user + quiz.run(); + String newline = System.lineSeparator(); + System.out.println(newline + "You answered " + quiz.getNumCorrect() + + " of " + quiz.getQuestions().size() + + " questions correctly. Thanks for playing!" + newline); + + + } +} diff --git a/studioChp7/src/main/java/org/studioCh7/ShortAnswer.java b/studioChp7/src/main/java/org/studioCh7/ShortAnswer.java new file mode 100644 index 000000000..7d888a629 --- /dev/null +++ b/studioChp7/src/main/java/org/studioCh7/ShortAnswer.java @@ -0,0 +1,22 @@ +package org.studioCh7; + +public class ShortAnswer extends Question{ + + public ShortAnswer(String question) { + super(question); + } + + @Override + public String toString() { + String newline = System.lineSeparator(); + return newline + getQuestion() + newline + + "Please enter a response (80 characters max):" + newline; + } + + @Override + public boolean isInvalid(String resp){ + return resp.length() >= 80; + } + + +} diff --git a/studioChp7/src/main/java/org/studioCh7/Survey.java b/studioChp7/src/main/java/org/studioCh7/Survey.java new file mode 100644 index 000000000..1c766747d --- /dev/null +++ b/studioChp7/src/main/java/org/studioCh7/Survey.java @@ -0,0 +1,51 @@ +package org.studioCh7; + +import org.studioCh7.Question; + +import java.util.ArrayList; +import java.util.Scanner; + +public class Survey extends Quiz{ + private final ArrayList allResponses = new ArrayList<>(); + + ArrayList getAllResponses() { + return allResponses; + } + + @Override + public void run() { + Scanner input = new Scanner(System.in); + for (Question question : getQuestions()) { + int i=0; + System.out.println(question); + + do{ + String userResponse = input.nextLine(); + if(userResponse.equalsIgnoreCase("done")){ + break; + }else { + while (question.isInvalid(userResponse)){ + System.out.println(System.lineSeparator() + "That response is invalid. Please try again:"); + userResponse = input.nextLine(); + } + System.out.println("Got it!"); + String content; + if (question instanceof ShortAnswer || question instanceof Paragraph || question instanceof LinearScale) { + content = userResponse; + } else { + int userRespNum = Integer.parseInt(userResponse); + content = question.getChoiceMap().get(userRespNum).getContent(); + } + String resp = question.getQuestion() + ": " + content; + allResponses.add(resp); + i++; + + if (question instanceof Checkbox && i < question.getMaxResponses()){ + System.out.println("(Select another by number or enter DONE)"); + } + } + }while (i < question.getMaxResponses()); + } + input.close(); + } +} diff --git a/studioChp7/src/main/java/org/studioCh7/SurveyRunner.java b/studioChp7/src/main/java/org/studioCh7/SurveyRunner.java new file mode 100644 index 000000000..ebdbbbb26 --- /dev/null +++ b/studioChp7/src/main/java/org/studioCh7/SurveyRunner.java @@ -0,0 +1,51 @@ +package org.studioCh7; + +public class SurveyRunner { + //static final to avoid the entire survey from getting deleted by accident. + private static final Survey survey = new Survey(); + + public static void main(String[] args){ + + Choices[] trueAndFalse = { + new Choices("True"), + new Choices("False") + }; + TrueFalse lactoseIntolerant = new TrueFalse("I am lactose-intolerant and need a non-dairy alternative", trueAndFalse); + TrueFalse diabetic = new TrueFalse("I am diabetic and need a no-sugar added alternative", trueAndFalse); + + Choices[] flavorChoices = { + new Choices("Vanilla"), + new Choices("Chocolate"), + new Choices("Strawberry") + }; + MultipleChoice flavor = new MultipleChoice("What flavor of ice cream would you like?", flavorChoices); + + LinearScale numScoops = new LinearScale("How many scoops of ice cream would you like?", 3); + + Choices[] toppingChoices = { + new Choices("Oreo crumble"), + new Choices("Fresh strawberry slices"), + new Choices("M&Ms"), + new Choices("Hot caramel syrup"), + new Choices("Pecans") + }; + + Checkbox toppings = new Checkbox("Select some toppings", toppingChoices); + + ShortAnswer flavorSuggestions = new ShortAnswer("What flavor of ice cream would you like to see added to our menu?"); + + Paragraph comments = new Paragraph("Any other questions or comments"); + + survey.addQuestions(new Question[] {lactoseIntolerant, diabetic, flavor, numScoops, toppings, flavorSuggestions, comments }); + + + String newline = System.lineSeparator(); + System.out.println("Thank you for registering for our meetup! We will be serving dessert and would like to know your preferences ahead of time." + newline); + survey.run(); + + System.out.println("Thank you! Your preferences have been noted for the upcoming event." + newline + "\t" + + String.join(newline + "\t", survey.getAllResponses()) + newline ); + } + + +} diff --git a/studioChp7/src/main/java/org/studioCh7/TrueFalse.java b/studioChp7/src/main/java/org/studioCh7/TrueFalse.java new file mode 100644 index 000000000..5ab5f7088 --- /dev/null +++ b/studioChp7/src/main/java/org/studioCh7/TrueFalse.java @@ -0,0 +1,16 @@ +package org.studioCh7; + +public class TrueFalse extends Question{ + + public TrueFalse(String question, Choices[] choiceArray) { + super(question, choiceArray); + } + + @Override + public String toString() { + String newline = System.lineSeparator(); + return newline + "TRUE or FALSE: " + newline + + getQuestion() + newline + + getFormattedChoices(); + } +} diff --git a/unit-testing/chapter-example/car-example/src/test/java/org/launchcode/CarTest.java b/unit-testing/chapter-example/car-example/src/test/java/org/launchcode/CarTest.java index f7b0c6f6e..c91a505a2 100644 --- a/unit-testing/chapter-example/car-example/src/test/java/org/launchcode/CarTest.java +++ b/unit-testing/chapter-example/car-example/src/test/java/org/launchcode/CarTest.java @@ -1,10 +1,29 @@ package org.launchcode; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + import static org.junit.jupiter.api.Assertions.*; class CarTest { + Car test_car; + @BeforeEach + public void createCarObject(){ + test_car = new Car("Totota", "Prius", 10, 50); + } + //TODO: add emptyTest so we can configure our runtime environment (remove this test before pushing to your personal GitLab account) + @Test + public void emptyTest() { + assertEquals(10, 10, .001); + } //TODO: constructor sets gasTankLevel properly + @Test + public void testInitialGasTank(){ + assertFalse(test_car.getGasTankLevel() > 50); + assertTrue(test_car.getGasTankLevel() < 50); + assertEquals(10, test_car.getGasTankLevel(), .001); + } //TODO: gasTankLevel is accurate after driving within tank range //TODO: gasTankLevel is accurate after attempting to drive past tank range //TODO: can't have more gas than tank size, expect an exception diff --git a/unit-testing/exercises/car-exercises/src/main/java/org/launchcode/Car.java b/unit-testing/exercises/car-exercises/src/main/java/org/launchcode/Car.java index d10c16f72..e33f6e310 100644 --- a/unit-testing/exercises/car-exercises/src/main/java/org/launchcode/Car.java +++ b/unit-testing/exercises/car-exercises/src/main/java/org/launchcode/Car.java @@ -46,6 +46,9 @@ public double getGasTankLevel() { } public void setGasTankLevel(double gasTankLevel) { + if(gasTankLevel > this.getGasTankLevel()){ + throw new IllegalArgumentException("Can't exceed tank size"); + } this.gasTankLevel = gasTankLevel; } @@ -84,4 +87,7 @@ public void drive(double miles) this.odometer += milesAbleToTravel; } + public void addGas(double gas){ + this.setGasTankLevel(gas + this.getGasTankLevel()); + } } diff --git a/unit-testing/exercises/car-exercises/src/test/java/org/launchcode/CarTest.java b/unit-testing/exercises/car-exercises/src/test/java/org/launchcode/CarTest.java index 1a3f2a04a..52772b38d 100644 --- a/unit-testing/exercises/car-exercises/src/test/java/org/launchcode/CarTest.java +++ b/unit-testing/exercises/car-exercises/src/test/java/org/launchcode/CarTest.java @@ -26,6 +26,21 @@ public void testInitialGasTank() { } //TODO: gasTankLevel is accurate after driving within tank range + @Test + public void testGasTankAfterDriving(){ + test_car.drive(50); + assertEquals(9, test_car.getGasTankLevel(), .001); + } //TODO: gasTankLevel is accurate after attempting to drive past tank range + @Test + public void testGasTankAfterExceedingTankRange(){ + test_car.drive(501); + assertEquals(test_car.getGasTankLevel(), 0, .001); + } //TODO: can't have more gas than tank size, expect an exception + @Test + public void testGasOverfillException(){ + assertThrows(IllegalArgumentException.class, () -> test_car.addGas(5), "Shouldn't get here, car cannot have more gas in tank than the size of the tank"); + } + } \ No newline at end of file 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..e48d0ab55 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 @@ -1,5 +1,6 @@ package org.launchcode; public class BalancedBrackets { + /* * The function BalancedBrackets should return true if and only if * the input string has a set of "balanced" brackets. @@ -19,15 +20,164 @@ public class BalancedBrackets { * @param str - to be validated * @return true if balanced, false otherwise */ + + public static boolean hasBalancedBrackets(String str) { int brackets = 0; + for (char ch : str.toCharArray()) { - if (ch == '[') { - brackets++; - } else if (ch == ']') { + if(brackets <= -1 && ch == '['){ brackets--; + } else if(brackets >= 1 && ch == '[' ){ + brackets++; + } else { + if (ch == '[') { + brackets++; + } else if (ch == ']') { + brackets--; + } } + } return brackets == 0; } + + public static String openingOrClosingFirst(String str) { + String braceFirst = ""; + for (char ch : str.toCharArray()) { + if (ch == '[') { + braceFirst = "["; + } else if (ch == ']') { + braceFirst = "]"; + } + } + return braceFirst; + } + + public static int moreOpeningOrClosingBraces(String str) { + int balancedOrNot = 0; + for (char ch : str.toCharArray()) { + if (ch == '[') { + balancedOrNot++; + } else if (ch == ']') { + + balancedOrNot--; + } + } + return balancedOrNot; + + } + + public static String stringStartWith(String str) { + char[] charArray = new char[str.length()]; + int i = 0; + String startsWith=null; + for (char ch : str.toCharArray()){ + charArray[i] = ch; + i++; + } + if(charArray[0] == '['){ + startsWith = "["; + } + return startsWith; + } + + public static String stringEndsWith(String str) { + char[] charArray = new char[str.length()]; + int i = 0; + String endsWith=null; + for (char ch : str.toCharArray()){ + charArray[i] = ch; + i++; + } + if(charArray[str.length()-1] == ']'){ + endsWith = "]"; + } + return endsWith; + } + + public static String openingBraceInString(String str) { + String stringContains=null; + char[] charArray = new char[str.length()]; + int i = 0; + int containsBrace = 0; + for (char ch : str.toCharArray()){ + if(ch == '['){ + containsBrace++; + } + charArray[i] = ch; + i++; + + } + if(charArray[0] != '[' && charArray[str.length()-1] != ']' && containsBrace > 0){ + stringContains = "["; + } + return stringContains; + } + + public static String closingBraceInString(String str) { + String stringContains=null; + char[] charArray = new char[str.length()]; + int i = 0; + int containsBrace = 0; + for (char ch : str.toCharArray()){ + if(ch == ']'){ + containsBrace++; + } + charArray[i] = ch; + i++; + + } + if(charArray[0] != '[' && charArray[str.length()-1] != ']' && containsBrace > 0){ + stringContains = "]"; + } + return stringContains; + } + + public static String twoOpeningBracesInARow(String str) { + + char[] charArray = new char[str.length()]; + StringBuilder arrayToStringBuilder = new StringBuilder(); + int i = 0; + String twoOpeningBraces = null; + for (char ch : str.toCharArray()){ + if(ch == '[' || ch == ']'){ + charArray[i] = ch; + i++; + } + } + + arrayToStringBuilder.append(charArray); + String braces = arrayToStringBuilder.toString(); + + if(braces.contains("[[")){ + twoOpeningBraces = "["; + } + return twoOpeningBraces; + } + + public static String twoClosingBraceInSequence(String str) { + + char[] charArray = new char[str.length()]; + StringBuilder arrayToStringBuilder = new StringBuilder(); + int i = 0; + String twoClosingBraces = null; + for (char ch : str.toCharArray()){ + if(ch == '[' || ch == ']'){ + charArray[i] = ch; + i++; + } + } + + arrayToStringBuilder.append(charArray); + String braces = arrayToStringBuilder.toString(); + + if(braces.contains("]]")){ + twoClosingBraces = "]"; + } + return twoClosingBraces; + } + + + } \ No newline at end of file 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..1929d9a9c 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 @@ -1,13 +1,99 @@ package org.launchcode; import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.*; class BalancedBracketsTest { - //TODO: add tests here + //TODO: emptyTest to assert gradle build is good @Test public void emptyTest() { - assertEquals(true, true); + assertTrue(true); + } + + //TODO: Assert there is an even number of opening and closing braces + @Test + public void evenNumberOfBrackets(){ + assertTrue(BalancedBrackets.hasBalancedBrackets("[la]u[nch]")); + assertTrue(BalancedBrackets.hasBalancedBrackets("[]")); + } + + //TODO: assert if there are more opening braces than closing braces + @Test + public void closingBracesMissing(){ + + assertTrue(BalancedBrackets.moreOpeningOrClosingBraces("[string]") <= 0); + assertTrue(BalancedBrackets.hasBalancedBrackets("[string]")); + } + + //TODO: assert if there are more closing braces than opening braces + @Test + public void openingBracesMissing(){ + + assertTrue(BalancedBrackets.moreOpeningOrClosingBraces("[stri]ng") >= 0); + assertTrue(BalancedBrackets.hasBalancedBrackets("[la]unch")); + } + + //TODO: assert string containing only brackets returns true + @Test + public void onlyBracketsReturnsTrue() { + assertTrue(BalancedBrackets.hasBalancedBrackets("[]")); + } + + + //TODO: assert if opening brace comes first + @Test + public void openingBraceFirst(){ + assertEquals("[",BalancedBrackets.openingOrClosingFirst("[launch")); + } + + + //TODO: asser if closing brace comes first + @Test + public void closingBraceFirst(){ + assertEquals("]", BalancedBrackets.openingOrClosingFirst("lau]nch")); + } + + //TODO: assert does opening brace start string + @Test + public void stringStartWithOpeningBrace(){ + assertEquals("[", BalancedBrackets.stringStartWith("[launch")); + } + //TODO: assert does closing brace end string + @Test + public void stringEndWithClosingBrace(){ + assertEquals("]", BalancedBrackets.stringEndsWith("launchCode]")); + } + //TODO: assert empty string returns true + @Test + public void emptyStringConsideredBraces(){ + assertTrue(BalancedBrackets.hasBalancedBrackets(" ")); + } + + //TODO: assert is OPENING brace contained in string + @Test + public void openingBraceContainedInString(){ + assertEquals("[", BalancedBrackets.openingBraceInString("lau[sdf")); } + + //TODO: assert is CLOSING brace contained in string + @Test + public void closingBraceContainedInString(){ + assertEquals("]", BalancedBrackets.closingBraceInString("lau]sdf")); + } + + //TODO: assert if two opening brace are in a row + @Test + public void twoOpeningBracesInARow(){ + + assertNotEquals("[", BalancedBrackets.twoOpeningBracesInARow("[la]un[ch")); + assertTrue(BalancedBrackets.hasBalancedBrackets("[la]unc[h]")); + } + + //TODO: assert is two closing brace are in a row + @Test + public void twoClosingBraceInSequence(){ + assertNotEquals("]", BalancedBrackets.twoClosingBraceInSequence("]l[au]sdf")); + assertTrue(BalancedBrackets.hasBalancedBrackets("[la][unch]")); + } + } \ No newline at end of file