diff --git a/src/main/java/fi/utu/tech/ooj/exercise1/teht2/Calculator.java b/src/main/java/fi/utu/tech/ooj/exercise1/teht2/Calculator.java index 45a7c659ce90c96b365ca6cf600cfdfacbe5fac2..1cdebd8609a875ebe540ceb1ed06679ffad1b2bd 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise1/teht2/Calculator.java +++ b/src/main/java/fi/utu/tech/ooj/exercise1/teht2/Calculator.java @@ -1,11 +1,34 @@ package fi.utu.tech.ooj.exercise1.teht2; +import java.util.ArrayList; + public class Calculator { + static String neg = ""; public static float avg(int[] nums) throws EmptyArrayException { int sum = 0; if (nums == null || nums.length == 0) throw new EmptyArrayException(); - for(int n: nums) sum += n; - return sum / nums.length; + + ArrayList<Integer> kopio = new ArrayList<>(); + + + for (int i=0; i< nums.length ; i++) { + if (nums[i] >= 0) { + kopio.add(nums[i]); + } else { + neg = neg + "Antamasi taulukon " + (i+1) + + ". luku " + nums[i] + " on virheellinen \n"; + } + } + if (kopio.size() == nums.length) { + for (int n : nums) sum += n; + return sum / nums.length; + } else { + return (float) -2.0; + } + + } + public static void tulostus() { + System.out.println(neg); } } diff --git a/src/main/java/fi/utu/tech/ooj/exercise1/teht2/EmptyArrayException.java b/src/main/java/fi/utu/tech/ooj/exercise1/teht2/EmptyArrayException.java index b310525b71d556a9cb71a29c2cde2a962c4cf7e8..b31697f81417917d2f603690a6071716467aa341 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise1/teht2/EmptyArrayException.java +++ b/src/main/java/fi/utu/tech/ooj/exercise1/teht2/EmptyArrayException.java @@ -2,4 +2,5 @@ package fi.utu.tech.ooj.exercise1.teht2; public class EmptyArrayException extends Exception{ + } diff --git a/src/main/java/fi/utu/tech/ooj/exercise1/teht2/Teht1.java b/src/main/java/fi/utu/tech/ooj/exercise1/teht2/Teht1.java index 2dc6408d3cb2773c749731bcc39642581763eb68..48c0a28e431b61b420ff2d0dab24e122d09a1725 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise1/teht2/Teht1.java +++ b/src/main/java/fi/utu/tech/ooj/exercise1/teht2/Teht1.java @@ -5,16 +5,19 @@ public class Teht1 { //Tulostetaan info-rivi, jotta suoritusta on helpompi seurata System.out.println("Suoritetaan Tehtävä 1"); - int[] nums = new int[] { }; + int[] nums = new int[] { }; Float result = -1f; try { result = Calculator.avg(nums); + if (result == -2) { + Calculator.tulostus(); + } } catch(EmptyArrayException e) { System.out.println("Oho, tapahtui hassuja"); } //Tulostetaan info-rivi, jotta suoritusta on helpompi seurata - System.out.println("Tehtävä 1 suoritus päättyi"); + System.out.println("Tehtävän 1 suoritus päättyi"); } } diff --git a/src/main/java/fi/utu/tech/ooj/exercise1/teht3/DensityCalculator.java b/src/main/java/fi/utu/tech/ooj/exercise1/teht3/DensityCalculator.java index 74212c4e7aa8a4315a441d820279b15cd7eb37fe..0c727b83ef4b8ffba2b261457a441da7df428c46 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise1/teht3/DensityCalculator.java +++ b/src/main/java/fi/utu/tech/ooj/exercise1/teht3/DensityCalculator.java @@ -3,8 +3,8 @@ package fi.utu.tech.ooj.exercise1.teht3; public class DensityCalculator { /* - * Alkuehto: TODO: määritä tähän alkuehto - * Loppuehto: TODO: määritä tähän loppuehto + * Alkuehto: massa>0, tilavuus>0 + * Loppuehto: RESULT=massa/tilavuus ja RESULT > 0 */ public static Double laskeTiheys(Double massa, Double tilavuus) { return (massa / tilavuus); @@ -14,15 +14,13 @@ public class DensityCalculator { /* * Alkuehto: true * Loppuehto: palautusarvo on (massa / tilavuus) ja palautusarvo > 0 ja palautusarvo < 250 - * Poikkeukset: Nostaa poikkeuksen IllegalArgumentException, jos... [TODO: täydennä ehto] + * Poikkeukset: Nostaa poikkeuksen IllegalArgumentException, jos massa tai tilavuus ei-positiivisia tai tiheys on liian suuri. */ public static Double laskeTiheysTotaalisesti(Double massa, Double tilavuus) throws IllegalArgumentException{ - /* TODO: Toteuta rutiini niin, että loppuehto pitää paikkansa ja poikkeus nostetaan tarvittaessa. - Huom. alla oleva return null on lisätty, jotta harjoitustyöpohja toimii myös - ennen kuin tehtävä on tehty. - */ - return null; + if (massa <= 0 || tilavuus <= 0 || massa/tilavuus >= 250) throw new IllegalArgumentException(); + return (massa/tilavuus); + } diff --git a/src/main/java/fi/utu/tech/ooj/exercise1/teht3/IllegalArgumentException.java b/src/main/java/fi/utu/tech/ooj/exercise1/teht3/IllegalArgumentException.java new file mode 100644 index 0000000000000000000000000000000000000000..1ad80b23573f88fdb19326ece6cb70d04e44f799 --- /dev/null +++ b/src/main/java/fi/utu/tech/ooj/exercise1/teht3/IllegalArgumentException.java @@ -0,0 +1,4 @@ +package fi.utu.tech.ooj.exercise1.teht3; + +public class IllegalArgumentException extends Exception{ +} diff --git a/src/main/java/fi/utu/tech/ooj/exercise1/teht3/Teht2.java b/src/main/java/fi/utu/tech/ooj/exercise1/teht3/Teht2.java index 0cc58aa173e9511631fb46ef47c1da38c8d0f70c..02af75939a556785603953922db8c51458bb37d4 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise1/teht3/Teht2.java +++ b/src/main/java/fi/utu/tech/ooj/exercise1/teht3/Teht2.java @@ -7,10 +7,15 @@ public class Teht2 { System.out.println("Esimerkkilasku:"); - Double massa = 10.4; + Double massa = 1.4; Double tilavuus = 2.0; - Double tiheys = DensityCalculator.laskeTiheys(massa, tilavuus); - System.out.println("Testiajon tulos: massa " + massa + " tilavuus " + tilavuus + " tiheys " + tiheys); + try { + Double tiheys = DensityCalculator.laskeTiheysTotaalisesti(massa, tilavuus); + System.out.println("Testiajon tulos: massa " + massa + " tilavuus " + tilavuus + " tiheys " + tiheys); + } + catch (IllegalArgumentException e) { + System.out.println("Annoit ei-positiivisia tai liian suuria lukuja"); + } //Tulostetaan info-rivi, jotta suoritusta on helpompi seurata System.out.println("Tehtävä 2 suoritus päättyi"); diff --git a/src/main/java/fi/utu/tech/ooj/exercise1/teht4/Sorter.java b/src/main/java/fi/utu/tech/ooj/exercise1/teht4/Sorter.java index 66138b1004356c28fcb10bad4f7cc120c5332830..3741411363ba54ac992b6a74cafc637a5303060f 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise1/teht4/Sorter.java +++ b/src/main/java/fi/utu/tech/ooj/exercise1/teht4/Sorter.java @@ -14,6 +14,7 @@ public class Sorter { } } + public static void selectionSort(int[] arr) { int n = arr.length; diff --git a/src/test/java/fi/utu/tech/ooj/exercise1/teht4/FactorialTest.java b/src/test/java/fi/utu/tech/ooj/exercise1/teht4/FactorialTest.java new file mode 100644 index 0000000000000000000000000000000000000000..5de321cd523dd37806037352d3e155cccfc5166e --- /dev/null +++ b/src/test/java/fi/utu/tech/ooj/exercise1/teht4/FactorialTest.java @@ -0,0 +1,15 @@ +package fi.utu.tech.ooj.exercise1.teht4; +// import fi.utu.tech.ooj.exercise1.teht3.IllegalArgumentException; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class FactorialTest { + + @Test + void calculateFactorial() { + assertEquals(0, Factorial.calculateFactorial(0)); + assertEquals(4*3*2*1, Factorial.calculateFactorial(4)); + assertThrows(IllegalArgumentException.class, () -> Factorial.calculateFactorial(-1)); + } +} \ No newline at end of file diff --git a/src/test/java/fi/utu/tech/ooj/exercise1/teht4/SorterTest.java b/src/test/java/fi/utu/tech/ooj/exercise1/teht4/SorterTest.java new file mode 100644 index 0000000000000000000000000000000000000000..520905c035fc5f2b1d6c90f5f207e25283443501 --- /dev/null +++ b/src/test/java/fi/utu/tech/ooj/exercise1/teht4/SorterTest.java @@ -0,0 +1,28 @@ +package fi.utu.tech.ooj.exercise1.teht4; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class SorterTest { + + @Test + void bubbleSort() { + int[] testi = new int[]{2, 5, 3, 4, 1}; + int[] oikea = new int[] {5, 4, 3, 2, 1}; + Sorter.bubbleSort(testi); + assertArrayEquals(oikea, testi); + } + // rutiini on hidas mikäli taulukko on suuri + + + @Test + void selectionSort() { + int[] testi = new int[]{2, 5, 3, 4, 1}; + int[] oikea = new int[] {1, 2, 3, 4, 5}; + Sorter.selectionSort(testi); + assertArrayEquals(oikea, testi); + } + + // työläs suuremmilla taulukoilla +} \ No newline at end of file