From 1b2d356ec6dfec38883fc5bc78dc7fe839c7eb64 Mon Sep 17 00:00:00 2001 From: Iiris <iiris.i.saresma@utu.fi> Date: Wed, 18 Sep 2024 09:20:48 +0300 Subject: [PATCH] valmista --- .../tech/ooj/exercise1/teht2/Calculator.java | 27 ++++++++++++++++-- .../exercise1/teht2/EmptyArrayException.java | 1 + .../utu/tech/ooj/exercise1/teht2/Teht1.java | 7 +++-- .../exercise1/teht3/DensityCalculator.java | 14 ++++------ .../teht3/IllegalArgumentException.java | 4 +++ .../utu/tech/ooj/exercise1/teht3/Teht2.java | 11 ++++++-- .../utu/tech/ooj/exercise1/teht4/Sorter.java | 1 + .../ooj/exercise1/teht4/FactorialTest.java | 15 ++++++++++ .../tech/ooj/exercise1/teht4/SorterTest.java | 28 +++++++++++++++++++ 9 files changed, 93 insertions(+), 15 deletions(-) create mode 100644 src/main/java/fi/utu/tech/ooj/exercise1/teht3/IllegalArgumentException.java create mode 100644 src/test/java/fi/utu/tech/ooj/exercise1/teht4/FactorialTest.java create mode 100644 src/test/java/fi/utu/tech/ooj/exercise1/teht4/SorterTest.java 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 45a7c65..1cdebd8 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 b310525..b31697f 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 2dc6408..48c0a28 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 74212c4..0c727b8 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 0000000..1ad80b2 --- /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 0cc58aa..02af759 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 66138b1..3741411 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 0000000..5de321c --- /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 0000000..520905c --- /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 -- GitLab