Minimum aller Elemente in einem Array bestimmen

1207

Aktives Mitglied
Hallo,
ich habe bereits eine Methode static float[] createFloateArrayWithNumbers(int count) implementiert, die ein Array erzeugt, in dem count viele float-Werte gespeichert werden können, aber kein Wert soll 0.0f sein oder der Position entsprechen. Das habe ich dazu schon gemacht und es funktioniert auch.
Java:
static float[] createFloatArraysWithNumbers( int count) {
	     
	     float[] arr = new float[count];
		
             for(int i= 0; i<arr.length; i++)
             arr[i] = (i / 2.0f) + 1.0f;  			 
			 
			 return arr;
		 
	 }


Jetzt soll ich eine Methode static float getMinimumElement( float[] numbers) implementieren, die das Minimum aller Elemente in einem Array numbers bestimmt. Diese Methode soll durch Aufruf in der main-Methode getestet werden und als Parameter soll die Funktion createFloatArrayWithNumbers( int numbers ) verwendet werden. So da macht die Methode leider nicht das, was ich will...
Das habe ich dazu schon gemacht:
Java:
static float getMinimumElement( float[] numbers ) {
	     int i = 0;
	     int n = 1;
		 numbers = new float[createFloatArraysWithNumbers(numbers)];
	     float smallest= numbers[i];
	 
	 while( n < numbers.length) {
	     
		 if ( smallest < numbers[i+1] )
		    {smallest = numbers[i];
			}
	     else {smallest = numbers[i+1];}
		 i++;
		 n = n+1;
		 }
		 
		 return smallest;
	 }
und das ist meine main-Methode dazu:
Java:
 public static void main(String[] args) {
	 float[] arr = createFloatArraysWithNumbers(10);
	    for(int i= 0; i < arr.length; i++) {
       System.out.println(arr[i]);
       }
	   float[ ]numbers = new float[createFloatArraysWithNumbers(numbers)];{
	  System.out.println(smallest);
	  }
So jetzt gibt mir die Konsole folgende Fehler aus, die ich aber leider nicht verstehe

23: error: method createFloatArraysWithNumbers in class blatt5 cannot be applied to given types;
numbers = new float[createFloatArraysWithNumbers(numbers)];
^
required: int
found: float[]
reason: actual argument float[] cannot be converted to int by method invocation conversion
C:\Users\C_\Desktop\blatt5.java:67: error: method createFloatArraysWithNumbers in class blatt5 cannot be applied to given types;
float[ ]numbers = new float[createFloatArraysWithNumbers(numbers)];{
^
required: int
found: float[]
reason: actual argument float[] cannot be converted to int by method invocation conversion
C:\Users\C_\Desktop\blatt5.java:68: error: cannot find symbol
System.out.println(smallest);
^
symbol: variable smallest
location: class blatt5
3 errors
<<< Process finished. (Exit code 1)
================ READY ================

Meine Frage ist jetzt, was genau sind meine Fehler und wie kann ich diese beheben?
 

wolfgang63

Bekanntes Mitglied
Hallo,
deine Methode "createFloatArraysWithNumbers( int count)" erwartet als Übergabe einen Integerwert für die Anzahl der Werte.
In deiner Methode getMinimumElement übergibst du aber ein Floatvariable (numbers)!
"numbers = new float[createFloatArraysWithNumbers(numbers)];
Viele Grüße :applaus:
 

rme

Top Contributor
Hallo :)

Java:
         numbers = new float[createFloatArraysWithNumbers(numbers)];

Beim Anlegen des Arrays gehört in die eckigen Klammern die Größe des gewünschten Arrays. createFloatArrayWithNumbers gibt aber keine Größe zurück, sondern ein ganzes Array. Allerdings bekommst du das Array ja schon als Parameter deiner Methode, es existiert also schon. Du musst also weder mit new ein neues anlegen, noch createFloatArrayWithNumbers aufrufen :) Die Zeile kann also einfach weg. Denn das Anlegen brauchst du ja nur einmal und das machst du schon in main:

Java:
     float[] arr = createFloatArraysWithNumbers(10);

Dieses Array bleibt bis zum Ende von main erhalten, du kannst es als Parameter an andere Funktionen übergeben und sie damit spielen lassen :) Deshalb müssen andere Methoden sich kein eigenes Array anlegen. Sonst würde das Minimum ja nicht in dem übergebenen Array gesucht, sondern in einem neuen, das die Methode sich erzeugt.

In Zeile 6 von main machst du das gleiche nochmal - da legst du ein neues Array an, obwohl schon eins existiert. Wahrscheinlich wolltest du da eigentlich deine Methode für das Minimum aufrufen? Das würde dann so aussehen:

Java:
getMinimumElement(arr);

Denn arr wurde in Zeile 2 von main angelegt, das kannst du direkt an getMinimumElement übergeben. Innerhalb der Methode heißt es dann aber nicht mehr arr, sondern numbers, weil du deinen Parameter so genannt hast. Das ist auch völlig Ok und üblich so, aber es könnte dich verwirren, deshalb erwähne ich es lieber :)

Damit du das ermittelte, kleinste Element auch speichern kannst, brauchst du in main eine Variable vom Typ float, denn das gibt getMinimumElement ja zurück. Also zum Beispiel so:

Java:
float smallest = getMinimumElement(arr);

Danach kannst du smallest mit System.out.println ausgeben und schauen, ob es passt :)

Hast du parallel dazu eine Vorlesung in linearer Algebra oder so und Spaß daran? Mathematisch ist das nämlich alles ziemlich wundervoll erklärbar, sodass man es besser versteht - aber dazu müsstest du Begriffe wie Abbildung, Definitionsbereich und Wertebereich gut kennen.. also falls du damit umgehen kannst, könnte ich es dir mit solchen Begriffen anschaulicher erklären :)
 
Zuletzt bearbeitet:

1207

Aktives Mitglied
Ja, ich habe noch lineare Algebra, was ich auch um einiges besser verstehe als Informatik...

Aber ich hab jetzt mal meine Methode geändert und sie sieht jetzt wie folgt aus:
Java:
 static float getMinimumElement( float[] numbers ) {
             int i = 0;
             int n = 1;
             float[] arr = createFloatArraysWithNumbers(10);
             float smallest= numbers[i];
         
         while( n < numbers.length) {
             
             if ( smallest < numbers[i+1] )
                {smallest = numbers[i];
                }
             else {smallest = numbers[i+1];}
             i++;
             n = n+1;
             }
             
             return smallest;
         }
und die main so:
Java:
public static void main(String[] args) {
	 System.out.println(createCharArrayWithNames());
	 
	 float[] arr = createFloatArraysWithNumbers(10);
	    for(int i= 0; i < arr.length; i++) {
       System.out.println(arr[i]);
       }
	  
      System.out.println( "kleinstes Element:" + getMinimumElement(arr));
	  
	   
    }

die Konsole gibt mir jetztsogar einen Wert aus :), aber leider ist das 5.0, was leider nicht der kleinste Wert ist :(
Also müsste doch jetzt noch irgendwo ein denkfehler in der while-Schleife sein, wenn ich mich nicht irre, oder?
 

rme

Top Contributor
Schauen wir mal :) Ich übersetz einfach mal deine Methode, damit du prüfen kannst, ob sie so arbeitet, wie du es dir vorgestellt hast:

Java:
       int i = 0;
             int n = 1;
             float[] arr = createFloatArraysWithNumbers(10);
             float smallest= numbers[i];

Hier werden die Variablen initialisierst. Insbesondere nimmst du an, dass das momentane Minimum im ersten Element stehen könnte. Die Zeile mit createFloatArraysWithNumbers ist erzeugt unabhängig vom übergebenen noch ein neues Array, das aber nirgends in der Methode genutzt wird.

Java:
         while( n < numbers.length) {

Da n momentan 1 ist, gehst du alle Elemente des Arrays außer dem ersten durch.

Java:
             if ( smallest < numbers[i+1] )
                {smallest = numbers[i];
                }
             else {smallest = numbers[i+1];}
             i++;
             n = n+1;
             }

Wenn dein momentanes Minimum kleiner als das übernächste Element ist, ersetzt du es durch das nächste Element. Also angenommen, smallest ist gerade 3 und die Werte ab i lauten so:

... 8 4 6

Dann prüft smallest < numbers[i+1], dass 3 < 4 ist (denn 4 ist an Position i + 1) und setzt deshalb smallest auf 8 (denn das steht in numbers).

Falls es nicht kleiner ist, setzst du es auf numbers[i+1], also zum Beispiel in diesem Fall: smallest sei wieder 3 und folgende Daten ab i:

... 8 2 6

Dann tritt der else-Fall ein, weil 3 < 2 nicht gilt. smallest wird nun auf 2 gesetzt.

Entspricht dieses Vorgehen an allen Stellen deinen Wünschen? :) Wo weicht es ab, warum weicht es ab?
 

1207

Aktives Mitglied
oh danke ich habe meinen Fehler gefunden, war in dem if Teil
Java:
	    static float getMinimumElement( float[] numbers ) {
             int i = 0;
             int n = 1;
             float smallest= numbers[i];      
         
         while( n < numbers.length) {
             
             if ( smallest < numbers[i+1] )  
                {smallest = smallest;
                }
             else {smallest = numbers[i+1];}
             i++;
             n = n+1;
             }
             
             return smallest;
         }

ich hab das jetzt so gemacht und ich weiss auch, dass smallest=smallest nicht wirklich was sagt, aber ich weiss nicht wie ich sage, dass falls smallest<numbers[i+1] smallest gleich bleibt, kann ich das irgendwie mit diesem continue machen oder wie geht das?
und Danke für die so ausführliche Beschreibung, was die Funktion da so macht! :)
 

rme

Top Contributor
Nun, du könntest im if-Fall einfach gar nichts machen:

Java:
  if ( smallest < numbers[i+1] )  
                {  }
  else {smallest = numbers[i+1];}

Aber dein Sinn für Ästhetik sollte sich nun trotzdem beschweren ;) Vielleicht könntest du die Bedingung der if-Abfrage negieren, damit du im if-Fall deine Magie durchführst und dann gar keinen else-Fall brauchst?
 

1207

Aktives Mitglied
Oh, das war ein super Tipp, sieht gleich viel schöner aus!
Java:
if ( smallest > numbers[i+1] )  
                {smallest = numbers[i+1];
                }
Danke, für die ganze Hilfe!!!
 

rme

Top Contributor
Super, jetzt hast du es mithilfe von kleinen Denkanstößen ja ganz allein gelöst.. du bist auf einem guten Weg! :)

Gerade am Anfang ist es sinnvoll, solche Methoden ein bisschen zu testen. Findet es das korrekte Element, wenn es am Anfang, am Ende und mittendrin steht? Du kannst dir ein paar Testfälle ausdenken und jeweils mit einer kleinen Zeile testen:

Java:
System.out.println(getMinimumElement(new float[] {2.0, 3.0, 4.0}));
System.out.println(getMinimumElement(new float[] {4.0, 3.0, 2.0}));
System.out.println(getMinimumElement(new float[] {4.0, 2.0, 3.0}));
 

1207

Aktives Mitglied
Das ist natürlich eine weniger umständliche Art das zu prüfen, als ich es gemacht habe :D
Java:
class test2a{
     static float getMinimumElement() {
	 
	 float[] test = new float[] {4, 6, 2, 9, 13, 765, 45, 65, 43};
	 int i = 0;
	 int n = 1;
	 float smallest= test[i];
	 
	 while( n < test.length) {
	     
		 if ( smallest > test[i+1] )
		    {smallest = test[i+1];
			}
		 i++;
		 n = n+1;
		 }
		 
		 return smallest;
	 }
	 
     public static void main(String[] args) {
	     System.out.println(getMinimumElement());
	 }
}
 

rme

Top Contributor
Aber dass du von selbst auf die Idee gekommen bist, es zu testen, und dafür einen Weg gefunden hast, ist die Hauptsache.. klasse :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Minimum und Maximum ausgeben lassen Java Basics - Anfänger-Themen 7
H Minimum in einem Array bestimmen Java Basics - Anfänger-Themen 7
N Minimum ausgeben lassen Java Basics - Anfänger-Themen 5
Z If abfrage - Minimum 0 Java Basics - Anfänger-Themen 9
B Java rekursion minimum von ein array Java Basics - Anfänger-Themen 2
R Erste Schritte Minimum und Maximum in Array finden Java Basics - Anfänger-Themen 29
S Minimum von 5 Werten Java Basics - Anfänger-Themen 6
A Felder- Minimum/Maximum Java Basics - Anfänger-Themen 2
E Minimum wird nicht ausgegeben Java Basics - Anfänger-Themen 9
M Maximum, Minimum und Mittelwert berechnen Java Basics - Anfänger-Themen 25
P Lokales Minimum- Maximum, Globales Minimum - Maximum ? Java Basics - Anfänger-Themen 4
B Minimum eines Int Arrays Java Basics - Anfänger-Themen 6
P Minimum/Maximum aus einer Liste Java Basics - Anfänger-Themen 3
S Minimum eines String-Arrays Java Basics - Anfänger-Themen 16
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
F Summieren aller Geschenke vom Typ Geschenk? Java Basics - Anfänger-Themen 12
F Summe aller echten Teiler Java Basics - Anfänger-Themen 2
F Summe aller echten Teiler und Zahlen zurückgeben Java Basics - Anfänger-Themen 1
D Interface Wieso Aufruf aller Methoden eines Interfaces? Java Basics - Anfänger-Themen 11
A Summe aller ungeraden Zahlen Java Basics - Anfänger-Themen 5
J ArrayList: summe aller Spielkarten Java Basics - Anfänger-Themen 15
L Array: Summe aller geraden und ungeraden Zahlen ermitteln Java Basics - Anfänger-Themen 9
B Summe aller Zahlen von 1 bis zu dieser Zahl (ohne while oder for schleife) Java Basics - Anfänger-Themen 4
L Summer aller Integer-Zahlen im Intervall [x,y] Java Basics - Anfänger-Themen 6
S Collections Ausgabe aller Tastencodes Java Basics - Anfänger-Themen 9
F Nach Beendigung aller Schleifen von vorn anfangen, Java Basics - Anfänger-Themen 5
R string aller args[] ? Java Basics - Anfänger-Themen 8
O Erste Schritte Aller Anfang ist schwer ! Bitte um Unterstützung Java Basics - Anfänger-Themen 6
O Liste aller Instanzen einer Klasse Java Basics - Anfänger-Themen 18
M Aller anfang ist schwer :D Hilfe! Java Basics - Anfänger-Themen 18
L Liste aller Klassen die in einem Paket sind Java Basics - Anfänger-Themen 7
F Aller Objekte einer Klasse Java Basics - Anfänger-Themen 9
D Summe aller Positiven Integer aus einer Liste mit ActionObject Java Basics - Anfänger-Themen 2
A Summe aller Natürlichen Zahlen - Methode Prüfen Java Basics - Anfänger-Themen 10
P Ermitteln aller perfekten Zahlen Java Basics - Anfänger-Themen 12
S Liste aller Partitionen (auch "unmounted") Java Basics - Anfänger-Themen 2
F Liste aller Ordner auf einem Laufwerk erstellen? Java Basics - Anfänger-Themen 3
Z Geburtstag aller Angestellten am bestimmten Datum Java Basics - Anfänger-Themen 59
A OOP Ausgabe aller erstellten Objekte Java Basics - Anfänger-Themen 3
M Eclipse: Durchsuchen aller Dateien? Java Basics - Anfänger-Themen 1
B Liste aller Klassen die ein Interface implementieren. Java Basics - Anfänger-Themen 7
K Anzahl aller Datensätze anzeigen ? Java Basics - Anfänger-Themen 5
L Auflistung aller Fonts Java Basics - Anfänger-Themen 2
G Liste aller WindowListener Java Basics - Anfänger-Themen 3
D Die Frage aller Fragen Java Basics - Anfänger-Themen 22
J Auslesen aller Attribute mit JDOM Java Basics - Anfänger-Themen 15
G Aller anfang is schwer. Java Basics - Anfänger-Themen 4
A ausgabe aller 10-bitzahlen Java Basics - Anfänger-Themen 6
A Liste aller Items einlesen Java Basics - Anfänger-Themen 8
B Wo finde ich eine Übersicht aller Methoden? Java Basics - Anfänger-Themen 2
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
E Elemente aus Liste entfernen und hinzufügen Java Basics - Anfänger-Themen 3
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
A Elemente in einem Array Java Basics - Anfänger-Themen 5
J Methoden Die Reihenfolge der Iterator-Elemente umkehren Java Basics - Anfänger-Themen 3
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
T SCC Elemente Java Basics - Anfänger-Themen 0
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
H Array Elemente Java Basics - Anfänger-Themen 17
T Elemente aus Array zu TableView JavaFX übertragen Java Basics - Anfänger-Themen 2
J Array Elemente werden nicht gefunden! Java Basics - Anfänger-Themen 6
GAZ String replace() Elemente tauschen Java Basics - Anfänger-Themen 13
J Array; Elemente kopieren Java Basics - Anfänger-Themen 17
V Array aus Klasse um vererbte Elemente erweitern Java Basics - Anfänger-Themen 3
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
A Array Elemente extrahieren ! Java Basics - Anfänger-Themen 4
J Elemente in einem 2D-Array summieren Java Basics - Anfänger-Themen 6
Kirby.exe Anzahl vorkommender Elemente im Array zählen Java Basics - Anfänger-Themen 9
M Matrix auf 4 Elemente untersuchen mit offenen Enden Java Basics - Anfänger-Themen 8
M Matrix Elemente vergleichen Java Basics - Anfänger-Themen 11
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
L String zerlegen & elemente hinzufügen Java Basics - Anfänger-Themen 5
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
L Erste Schritte Elemente zwei Schlangen vergleichen Java Basics - Anfänger-Themen 14
E Elemente aus Liste löschen Java Basics - Anfänger-Themen 5
L Array Elemente verschieben Java Basics - Anfänger-Themen 5
S Elemente in Liste einfügen Java Basics - Anfänger-Themen 2
D jsoup.select findet keine elemente Java Basics - Anfänger-Themen 2
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
W ArrayList löscht alle Elemente bis auf eines Java Basics - Anfänger-Themen 2
M Elemente in einer ArrayList einander zuordnen. Java Basics - Anfänger-Themen 18
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
J Elemente in Array speichern, löschen, ... Java Basics - Anfänger-Themen 3
arjoopy Kapselung Elemente aus Objekt-Array ausgeben Java Basics - Anfänger-Themen 8
U Input/Output Elemente eines Binären Suchbaums ausgeben Java Basics - Anfänger-Themen 10
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3
K Anzahl gleicher Elemente in Array Java Basics - Anfänger-Themen 32
M LinkedList elemente löschen Java Basics - Anfänger-Themen 2
D Klassen Doppelt so viele Elemente in Arraylist ? Java Basics - Anfänger-Themen 4
V Elemente aus einem Array mit null überschreiben Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben