# Hilfe Demo



## bsargl7. (22. Nov 2021)

Meine Aufgabe ist es : 
Sie haben in der Vorlesung Informatik verschiedene Sortieralgorithmen kennengelernt. Sie sollen hier praktisch untersucht werden. 
1. Programmieren Sie ein Klasse Demo.java. In dieser Klasse sollen Sie eine Methode erzeugeArray() programmieren, die ein Array mit 100 Zufallszahlen zwischen 0 und 1000 zurückgibt. Desweiteren soll die Klasse eine Methode demonstriere() enthalten, die nach und nach die Sortieralgorithmen, die in den weiteren Aufgaben programmiert werden sollen aufruft. 
2. Programmieren Sie eine Klasse Sortieren.java. In dieser sollen alle folgenden Methoden programmiert werden. 
3. Als erstes sollen Sie den Selectionsort Algorithmus mit einer Methode selectionSort() demonstrieren. Geben Sie auf der Konsole das geordnete Array aus und verwenden Sie als Rückgabewert wie häufig eine Permutation durchgeführt worden sind. 
4. Mit den gleichen Randbedingungen soll der Insertionsort Algorithmus mit einer Methode insertionSort() demonstriert werden. 
5. Mit den gleichen Randbedingungen soll der Bubblesort Algorithmus mit einer Methode bubbleSort() demonstriert werden

Unten ist meine beide Klassen zu sehen. Meine Methode demonstriere funktioniert nicht. Ich habe alles mögliche versucht. Wo ist mein Fehler ?

[CODE lang="java" title="Demo"]import java.util.Random;
import java.util.Arrays;
import java.util.*;
/**
 *Diese Klasse hat ein ein Array, der  100 Zufallszahlen zwischen 0 und 1000
 *zurückgibt. Desweiteren soll die Klasse  die nach
 *und nach die Sortieralgorithmen, die in der Klasse "Sotieren" aufrufen.
 *
 * @author (Büsra Rasgele)
 * @version (16.11.2021)
 */
public class Demo
{
    private Random zufall;
    private int obereGrenze;
    int [] checkArray;

    /**
     * Konstruktor für Objekte der Klasse Demo
     */
    public Demo()
    {
        zufall= new Random();
        obereGrenze= 1000;

    }

    public int zufallsZahl(){
        return(zufall.nextInt(obereGrenze)+1);
    }

    /**
     * Gebe 100 Zufallszahlen zwischen den Zahlen 0-1000 aus.   
     * @return  int zahlen (Zufallszahlen)
     */

    public int[] erzeugeArray(){
        int[]zahlen=new int [100];
        for(int i=0;i<100;i++){
            zahlen_=zufallsZahl();
            for (int j=0;j<i;j++){
                if (zahlen ==zahlen[j]){
                    i--;
                }
            }
        }
        return zahlen;
    }

    /**
     * Rufe die Sotieralgorithmen auf.
     *
     * @return selectionSort , permutationen
     * @return insertionSort , permutationen
     * @return bubbleSort , permutationen
     */
    public void demonstriere(){
        Sortieren sort= new Sortieren();


        System.out.println("Start mit der SelectionSort Algorithmus");
        int permutationen =sort.selectionSort(checkArray.clone());
        System.out.println("Anzahl der Permutationen : " +permutationen);

        System.out.println("Start mit der InsertionSort Algorithmus");
        permutationen  =sort.insertionSort(checkArray.clone());
        System.out.println ("Anzahl der Permutationen : " +permutationen);

        System.out.println ("Start mit der BubbleSort Algorithmus");
        permutationen =sort.bubbleSort(checkArray.clone());
        System.out.println("Anzahl der Permutationen :"+permutationen);

    }
}[/CODE]
[CODE lang="java" title="Sortieren"]import java.util.Random;
import java.util.Arrays;
import java.util.*;
/**
 *Diese Klasse soll dazu dienen, dass verschiedene Sortieralgorithmen(Selection, Insert, Bubble)
 *aus der Klasse Demo die Zufallszahlen sortiert werden.
 * @author (Büsra Rasgele)
 * @version (16.11.2021)
 */
public class Sortieren
{
    private int permutationen;
    private int zahlen;

    /**
     * Konstruktor für Objekte der Klasse Sortieren
     */
    public Sortieren()
    {
        permutationen = 0;

    }

    /**
     * Gebe alle 100 Zufallszahlen aus der Klasse Demo sotiert zurück.
     * @param zusotieren (das unsortierte Array)
     * @return die Anzahl der Permutation //bis Array sotiert.
     */
    public int selectionSort(int[] zusotieren) {
        permutationen =0;
        int temp;
        for (int i = 0; i < zusotieren.length - 1; i++) {
            for (int j = i + 1; j < zusotieren.length; j++) {
                if (zusotieren > zusotieren[j]) {
                    temp = zusotieren;
                    zusotieren = zusotieren[j];
                    zusotieren[j] = temp;
                }
            }
        }
        return permutationen;
    }

    /**
     * Gebe alle 100 Zufallszahlen aus der Klasse Demo sotiert zurück.
     * @param zusotieren (das unsortierte Array)
     * @return die Anzahl der Permutation //bis Array sotiert.
     */
    public  int insertionSort(int[] zusotieren) {
        permutationen =0;
        int temp;
        for (int i = 1; i < zusotieren.length; i++) {
            temp = zusotieren;
            int j = i;
            while (j > 0 && zusotieren[j - 1] > temp) {
                zusotieren[j] = zusotieren[j - 1];
                j--;
            }
            zusotieren[j] = temp;
        }
        return permutationen;
    }

    /**
     * Gebe alle 100 Zufallszahlen aus der Klasse Demo sotiert zurück.
     * @param zusotieren (das unsortierte Array)
     * @return die Anzahl der Permutation //bis Array sotiert.
     */
    public  int bubbleSort(int[] zusotieren) {
        permutationen=0;
        int temp;
        for(int i=1; i<zusotieren.length; i++) {
            for(int j=0; j<zusotieren.length-i; j++) {
                if(zusotieren[j]>zusotieren[j+1]) {
                    temp=zusotieren[j];
                    zusotieren[j]=zusotieren[j+1];
                    zusotieren[j+1]=temp;
                }

            }
        }
        return permutationen;
    }
}
[/CODE]_


----------



## temi (22. Nov 2021)

bsargl7. hat gesagt.:


> Meine Methode demonstriere funktioniert nicht.



Was bedeutet "funktioniert nicht"? 



bsargl7. hat gesagt.:


> In dieser Klasse sollen Sie eine Methode erzeugeArray() programmieren, die ein Array mit 100 Zufallszahlen zwischen 0 und 1000 zurückgibt.


[CODE lang="java" highlight="5-8"]    public int[] erzeugeArray(){
        int[]zahlen=new int [100];
        for(int i=0;i<100;i++){
            zahlen_=zufallsZahl();
            for (int j=0;j<i;j++){
                if (zahlen ==zahlen[j]){
                    i--;
                }
            }
        }
        return zahlen;
    }[/CODE]
Was soll die zweite Schleife da machen?_


----------



## bsargl7. (22. Nov 2021)

temi hat gesagt.:


> [CODE lang="java" highlight="5-8"]    public int[] erzeugeArray(){
> int[]zahlen=new int [100];
> for(int i=0;i<100;i++){
> zahlen_=zufallsZahl();
> ...


_
Es soll die Wiederholung von Zahlen vermeiden_


----------



## temi (22. Nov 2021)

bsargl7. hat gesagt.:


> Es soll die Wiederholung von Zahlen vermeiden


Das ist doch überhaupt nicht gefordert.


----------



## bsargl7. (22. Nov 2021)

temi hat gesagt.:


> Das ist doch überhaupt nicht gefordert.


Unser Lehrer hat es uns überlassen ich kann es auch weg lassen wenn es das Problem ist.


----------



## temi (22. Nov 2021)

bsargl7. hat gesagt.:


> Unser Lehrer hat es uns überlassen ich kann es auch weg lassen wenn es das Problem ist.


Es ist, sagen wir mal, eigenwillig, aber vermutlich nicht das Problem. Was ist denn das Problem?


----------



## bsargl7. (22. Nov 2021)

Habe es jetzt so :  



[CODE lang="java" title="methode erzeugearray"] public int[] erzeugeArray(){
        int[]zahlen=new int [100];

        }
        return zahlen;
    }[/CODE]


----------



## bsargl7. (22. Nov 2021)

temi hat gesagt.:


> Es ist, sagen wir mal, eigenwillig, aber vermutlich nicht das Problem. Was ist denn das Problem?


Mein Problem ist in der Mehode demonstriere. Es gibt es nicht zurück also den permutation


----------



## bsargl7. (22. Nov 2021)

Bekomme das angezeigt wenn ich die Methode aufrufe. Aber ich  weiß nicht wo mein Fehler ist


----------



## temi (22. Nov 2021)

bsargl7. hat gesagt.:


> Habe es jetzt so :
> 
> 
> 
> ...


Das ist jetzt wieder etwas zu wenig. Damit gibts du ein leeres Array zurück.


----------



## bsargl7. (22. Nov 2021)

temi hat gesagt.:


> Das ist jetzt wieder etwas zu wenig. Damit gibts du ein leeres Array zurück.


Und wie soll ich es jetzt machen?


----------



## temi (22. Nov 2021)

bsargl7. hat gesagt.:


> Mein Problem ist in der Mehode demonstriere. Es gibt es nicht zurück also den permutation


Wo wird denn demonstriere() aufgerufen? Wo wird erzeugeArray() aufgerufen?


----------



## bsargl7. (22. Nov 2021)

temi hat gesagt.:


> Wo wird denn demonstriere() aufgerufen? Wo wird erzeugeArray() aufgerufen?


Wie meinst du das?


----------



## temi (22. Nov 2021)

bsargl7. hat gesagt.:


> Und wie soll ich es jetzt machen?


Du sollst ein Array mit 100 Elementen erzeugen und mit Zufallszahlen zwischen 0 und 1000 befüllen. Das hattest du doch schon fertig (mit einer eigenwilligen Erweiterung).


----------



## temi (22. Nov 2021)

bsargl7. hat gesagt.:


> Wie meinst du das?


Ich sehe keine main() Methode. Wo wird die Methode demonstriere() also aufgerufen?

In der Klasse Demo gibt es eine Instanzvariable checkArray, welches in demonstriere() verwendet wird. Das Array ist allerdings nicht definiert, soweit ich sehe.


----------



## bsargl7. (22. Nov 2021)

temi hat gesagt.:


> Ich sehe keine main() Methode. Wo wird die Methode demonstriere() also aufgerufen?
> 
> In der Klasse Demo gibt es eine Instanzvariable checkArray, welches in demonstriere() verwendet wird. Das Array ist allerdings nicht definiert, soweit ich sehe.


Also wäre dann "zahlen" sinnvoller ? Da es in erzeugeArray definiert ist?


----------



## temi (22. Nov 2021)

Es wäre sinnvoll die Methode erzeugeArray() irgendwo aufzurufen und das von dieser erzeugte und zufällig befüllte Array z. B. dem Array checkArray zuzuweisen, damit es auch einen Inhalt hat und nicht "null" ist.


----------



## bsargl7. (22. Nov 2021)

temi hat gesagt.:


> Es wäre sinnvoll die Methode erzeugeArray() irgendwo aufzurufen und das von dieser erzeugte und zufällig befüllte Array z. B. dem Array checkArray zuzuweisen.


also meinst du int [] checkArray = erzeugeArray(); ??


----------



## temi (22. Nov 2021)

bsargl7. hat gesagt.:


> also meinst du int [] checkArray = erzeugeArray(); ??


Probiere es halt aus.


----------

