Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
das ist mein erster Thread hier, um bin im Wahrsten Sinne des Wortes: TheBeginner.
Ich hoffe ihr könnt meine Aufgabenstellung einsehen:
Wie ihr seht muss ich die Mininumsnorm bestimmen. Mir ist nicht klar, wie ich das aufschreiben soll, das ich vom Array die betragsmäßigst kleine Zahl her kriege.
mein Ansatz:
for( int entry: array) { // Dadurch werden ja alle Werte im Array durchgeschaut
Einfach wenn der aktuelle Eintrag kleiner als das bisherige Minimum ist, wird das bisherige Minimum überschrieben. Initial setzt du diesen Wert auf [c]Integer.MAX_VALUE[/c].
Ich verstehe nicht ganz was unter Integer.Max_VALUE zu verstehen ist.
Das soll ja eine Konstante sein. Enspricht diese dem größten Wert der sich im Array befindet ???
Und das Math.min oder Math.abs sagt mir leider gar nichts. Klar habe ich mal was von Bibliothek gehört wo so ein sinus etc definiert wurde, aber wie man damit arbeitet, weiß ich leider nicht.
Danke schonmal für die schnellen Antworten...
Bitte bei möglichst ausführlich erklären, da ich ja der Beginner bin
Was denkst du, was [c]Integer.Max_VALUE[/c] heisst? Nicht durch Zufall "grösster Wert" ? Steht auch in der Aufgabenstellung.
[c]min[/c] -> minimum
[c]abs[/c] -> absoluter Wert einer Zahl
Ansonsten: [japi]Integer[/japi] und [japi]Math[/japi]
Hier ist eine Lösung mit der ich gar nichts anfangen kann.
Bitte sagt mir,ob ich die Lösung überhaupt verstehe..
Hier ist eine Lösung mit der ich gar nichts anfangen kann.
Bitte sagt mir,ob ich die Lösung überhaupt verstehe..
Java:
Hier ist eine Lösung mit der ich gar nichts anfangen kann.
Bitte sagt mir,ob ich die Lösung überhaupt verstehe..
public static int minNorm( int[ ] array ) {
int temp= Integer.MAX_VALUE ;
for ( int entry : array ) {
if( Math.abs(entry) < temp) {
temp= Math.abs(entry) ;
}
}
return temp;
}
public static int minNorm( int[ ] array ) {
int temp= Integer.MAX_VALUE ; // Der Variable temp, wird der größte Wert des Array
zugeschrieben. Damit das Sinn macht, muss diese Konstante
den betragsmäßig größten Wert übergeben.
Wäre z.B der Array (-1,-100,19) müsste temp nun lauten 100
for ( int entry : array ) { // Die Variable entry geht den gesamten Array durch.
if( Math.abs(entry) < temp) { // Was heißt Math.abs ?Die Liste die mir im Link geg. wurde stand nichts dazu.Verstehe nicht was die if-Schleife bringt.
temp= Math.abs(entry) ;
}
}
return temp;
}
Absolutwert von 7 ist 7. Von -5 ist es 5. Merkst du was ?
Edit: Nein, [c]Integer.MAX_VALUE[/c] ist nicht 100 sondern der grösstmögliche int, also [c]2^31-1[/c].
int temp = Integer.MAX_VALUE;
for (int entry : array) {// Hier läuft er über das array
if (Math.abs(entry) < temp) {//wenn der absolute Wert von entry kleiner als temp ist, dann soll temp =entry sein, als absoluter Wert
temp = Math.abs(entry);
}
}
return temp;
, das ist ein Feld (=Eigenschaft) namens MAX_VALUE der Klasse Integer im Paket java.lang und ist laut API-Dokumentation "A constant holding the maximum value an int can have".
Das hier ist ein Forum für konkrete Fragen (gern auch von Java-Anfängern), aber alle Grundlagen werden wir dir hier nicht einfach so beibringen. Dafür gibt es nämlich Unmengen an Lehrmaterial im Netz und auch offline. Wenn du willst, dass dir jemand alles erklärt, wirst du hier auch fündig - braucht aber wahrscheinlich etwas Geld.
(Formatierungsänderungen im Zitat von mir.) Diese Fragen sind eher mathematischer Natur und haben eigentlich nichts mit Java zu tun. temp in diesem Fall zu Beginn auf
Code:
Integer.MAX_VALUE
zu setzen, liegt einfach daran, dass
Code:
Integer.MAX_VALUE
das neutrale Element der Minimumsfunktion ist:
Code:
Math.min(a, Integer.MAX_VALUE) == a
bzw.
Code:
Math.min(Integer.MAX_VALUE, a) == a
für alle [c]int a[/c].
Wenn man mit diesem Wert anfängt, kann man also nichts falsch machen (bei der hier vorliegenden Problemstellung).
Was die Anzahl der Vorkommen des Minimums in einer Folge von Zahlen betrifft, gibt es im vorliegenden Fall wohl nur eine Regel: Das Minimum muss in der Folge/Menge vorkommen. Es kann aber auch mehrfach enthalten sein. Und dennoch ist das Minimum eindeutig.
int[] array = { 4, 2, 121, 423, 5134, 213, 23123, 1, 52, -23123, 21312,
-53, -1235567, 231545 };
int temp = Integer.MAX_VALUE;
int i = 1;
for (int entry : array) {// Hier läuft er über das array
System.out.println("Durchlauf: " + i);
i++;
if (Math.abs(entry) < temp) {// wenn der absolute Wert von entry
// kleiner als temp ist, dann soll
// temp =entry sein, als absoluter
// Wert
System.out.println("\t" + entry + " (entry) ist kleiner als "
+ temp + " (temp)");
System.out
.println("\t\ttemp bekommt entry zugewiesen...daher ist temp jetzt der kleinste Wert ("
+ entry + ")");
temp = Math.abs(entry);
}
[xml]Durchlauf: 1
4 (entry) ist kleiner als 2147483647 (temp)
temp bekommt entry zugewiesen...daher ist temp jetzt der kleinste Wert (4)
Durchlauf: 2
2 (entry) ist kleiner als 4 (temp)
temp bekommt entry zugewiesen...daher ist temp jetzt der kleinste Wert (2)
Durchlauf: 3
Durchlauf: 4
Durchlauf: 5
Durchlauf: 6
Durchlauf: 7
Durchlauf: 8
1 (entry) ist kleiner als 2 (temp)
temp bekommt entry zugewiesen...daher ist temp jetzt der kleinste Wert (1)
Durchlauf: 9
Durchlauf: 10
Durchlauf: 11
Durchlauf: 12
Durchlauf: 13
Durchlauf: 14[/xml]
Wozu überhaupt Integer.MAX_VALUE möchte man fragen.
Im Grunde könnte man hier temp auch mit dem Absolutwert des ersten Array-Elements initialisieren.
Integer.MAX_VALUE darf zwar verwendet werden, muss aber wohl nicht.
pappawinni, na dann müsstest du aber noch [c]if (array.length > 0)[/c] abfragen. Ansonsten kriegst du einfach [c]Integer.MAX_VALUE[/c] als Resultat, wenn das Array leer ist
Hier muss ich mal ganz blöd nachfragen. Steht in der Aufgabenstellung nicht etwas von einer Funktion, die alle Werte auf den betragsmäßig niedrigsten Wert abbildet?
Demzufolge müsste doch ein Array zurückgegeben werden?
Außerdem: Ist
Java:
int min = Integer.MAX_VALUE;
for(int entry: array)
min = Math.min(min, Math.abs(entry));
nicht langsamer als
Java:
int min = array[0];
for (int i : array) {
int a = Math.abs(i);
if (a < min)
min = a;
}
Oder irre ich mich jetzt?
Kurze Erklärung: min und i sind Variablen des Typs int. Variablen binden einen Wert an einen Namen. for-each ist eine Schleife, die sukzessive alle Werte/Elemente eines Arrays (oder einer anderen iterierbaren Datenstruktur) der Variablen i zuweist. if ist eine bedingte Anweisung (auch eine Kontrollstrukur), die in ihr enthaltenen Code nur dann ausführt, wenn vorher ihre Bedingung zutraf
pappawinni, na dann müsstest du aber noch [c]if (array.length > 0)[/c] abfragen. Ansonsten kriegst du einfach [c]Integer.MAX_VALUE[/c] als Resultat, wenn das Array leer ist
Die Frage wäre, ob es denn richtig ist, bei einem leeren Array überhaupt einen Wert zurück zu liefern, also so zu tun, als gäbe es ein Ergebnis, obwohl es eigentlich keines geben kann.
Ich stell mir vor, ich gehe an den Zigarettenautomaten und werfe kein Geld ein und kriege dann, weil die Eingabe von 0 Euro nicht definiert ist, ich aber trotzdem eine Ausgabetaste gedrückt habe, den ganzen Inhalt des Automaten, oder wie?
Hier muss ich mal ganz blöd nachfragen. Steht in der Aufgabenstellung nicht etwas von einer Funktion, die alle Werte auf den betragsmäßig niedrigsten Wert abbildet?
Demzufolge müsste doch ein Array zurückgegeben werden?
Also wenn ich die Aufgabenstellung richtig verstanden habe, dann sollte die Minimumnorm ein einzelner Wert sein, nämlich der betragsmäßig kleinste Wert eines Vektors.
Bei Wikipedia hab ich leider nur Maximumsnorm gefunden. Im diesbezüglichen Beispiel wird dort dann auch ein einzelner Wert als Maximumsnorm (bzw. Maximumnorm) angebenen.
Ich stell mir vor, ich gehe an den Zigarettenautomaten und werfe kein Geld ein und kriege dann, weil die Eingabe von 0 Euro nicht definiert ist, ich aber trotzdem eine Ausgabetaste gedrückt habe, den ganzen Inhalt des Automaten, oder wie?