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