Index Ermittlung

orangata

Mitglied
Hallo,

Ich möchte mir von einem Array das Maximum ausgeben lassen, was mein Programm inzwischen auch macht.
Ausreden möchte ich aber noch gesagt bekommen, an welcher Position mein Maximum steht.
Mein Index läuft von 0 bis 9 dabei.
Wie kann ich das erreichen?
 
Hallo Orangata,

Die Variable "maximum" kannst Du rausschmeißen und ersetzen durch die Deklaration von "indexMaximum". Beispiel:
Java:
int[] array = {1, 4, 8, 2, 22, 99, 33, 4, 9, 0};
int indexMaximum = 0;
for (int index = 0; index < array.length; index++) {
    if (array[index] > array[indexMaximum]) {
        indexMaximum = index;
    }
}
System.out.println("Maxiumum: array[" + indexMaximum + "] = " + array[indexMaximum]);
Gruß,
André
 
Ich habe gerade noch einmal nachgeschaut, statt Array soll bei mir stehen:

int value ={............}

Das ist dann aber egal oder ? Das ist ja trotzdem ein Array.
 
Java:
class Maximum // Ermittle das Maximinum eines Arrays und en Index
{
    public stativ void main String[] args {
	    int [] values ={12,9,13,27,58,33,25,14,40,70,89,73};
		int max = Integer.MAX_VALUE;
	for(int wert: values) {
        if(wert>max)
            max = wert; 
	}
System.out.println("Wert des Maximums " + max);
	int indexMaximum = 0;
for (int index = 0; index < value.length; index++) {
    if (value[index] > value[indexMaximum]) {
        indexMaximum = index;
    }
}
System.out.println("Maxiumum: value[" + indexMaximum + "] = " + value[indexMaximum]);

So , ich habe den Index -Anteil malk dazugefügt, das Programm liefert aber noch nicht das, was es soll
Maximum: 89, Index: 10
 
Java:
class Maximum // Ermittle das Maximinum eines Arrays und en Index
{
    public stativ void main String[] args {
	    int [] values ={12,9,13,27,58,33,25,14,40,70,89,73};
		int max = Integer.MAX_VALUE;
	for(int wert: values) {
        if(wert>max)
            max = wert; 
	}
System.out.println("Wert des Maximums " + max);
	int indexMaximum = 0;
for (int index = 0; index < value.length; index++) {
    if (value[index] > value[indexMaximum]) {
        indexMaximum = index;
    }
}
System.out.println("Maxiumum: value[" + indexMaximum + "] = " + value[indexMaximum]);

So , ich habe den Index -Anteil malk dazugefügt, das Programm liefert aber noch nicht das, was es soll
Maximum: 89, Index: 10

Schau mal die Syntax von deiner Main Methode an, diese ergibt sicherlich einen Compiler-Fehler.
 
So , ich habe den Index -Anteil malk dazugefügt, das Programm liefert aber noch nicht das, was es soll
Maximum: 89, Index: 10[/QUOTE]

Wieso ist doch richtig so. Arrays beginnen immer bei 0. Daher ist 89 bei Index 10 und nicht 11.
 
Java:
class Maximum // Ermittle das Maximinum eines Arrays und en Index
{
    public static void main (String[] args) {
	    int [] values ={12,9,13,27,58,33,25,14,40,70,89,73};
		int max = Integer.MAX_VALUE;
	for(int wert: values) {
        if(wert>max)
            max = wert; 
	}
System.out.println("Wert des Maximums " + max);
	int indexMaximum = 0;
for (int index = 0; index < value.length; index++) {
    if (value[index] > value[indexMaximum]) {
        indexMaximum = index;
    }
}
System.out.println("Maxiumum: value[" + indexMaximum + "] = " + value[indexMaximum]);
Die Fehler in der main-Methode waren wirklich blöd, aber es läuft jetzt immer noch nicht :-(
 
Du hast ja auch ein Array das values heißt aber schreibst nur value.
Außerdem ist die Syntax bei deiner System.out.println falsch und es fehlen zwei Klammern am Ende.

Ändere es so ab und es funktioniert:
Java:
class Maximum // Ermittle das Maximinum eines Arrays und en Index
{
    public static void main (String[] args) {
        int [] values ={12,9,13,27,58,33,25,14,40,70,89,73};
      
    int indexMaximum = 0;
for (int index = 0; index < values.length; index++) {
    if (values[index] > values[indexMaximum]) {
        indexMaximum = index;
    }
}
System.out.println("Maximum: "+values[indexMaximum]+" an der Stelle: "+indexMaximum);
}
}
 
Java:
	public class Test // Ermittle das Maximinum eines Arrays und en Index
	{
	    public static void main (String[] args) {
	        int [] values ={12,9,13,27,58,33,25,14,40,70,89,73};
	        int max = Integer.MAX_VALUE;
	    for(int wert: values) {
	        if(wert>max)
	            max = wert; 
	    }
	System.out.println("Wert des Maximums " + max);
	    int indexMaximum = 0;
	for (int index = 0; index < values.length; index++) {
	    if (values[index] > values[indexMaximum]) {
	        indexMaximum = index;
	    }
	}
	System.out.println("Maxiumum: value[" + indexMaximum + "] = " + values[indexMaximum]);
	}

}
Du hast oft statt. "values" einfach nur "value" geschrieben. Diese Variable gab es aber nicht. Jetzt sollte es funktionieren

war zu langsam 🙁
 
@GEEK. Nocheinmal für mich : ich soll statt, value, values schreiben.
Hab ich gemacht - funktioniert trotzdem noch nicht.
Gibt es noch Klammerfehler, stimmt bei ...............println irgendetwas nicht.
 
@GEEK. Nocheinmal für mich : ich soll statt, value, values schreiben.
Hab ich gemacht - funktioniert trotzdem noch nicht.

Wenn du dir den von mir geposteten Code kopierst und nur den Klassennamen in "Maximum" änderst, also so wie du ihn am Anfang hattest, dann funktioniert es.

Also so:

Java:
   public class Maximum // Ermittle das Maximinum eines Arrays und en Index
    {
        public static void main (String[] args) {
            int [] values ={12,9,13,27,58,33,25,14,40,70,89,73};
            int max = Integer.MAX_VALUE;
        for(int wert: values) {
            if(wert>max)
                max = wert; 
        }
    System.out.println("Wert des Maximums " + max);
        int indexMaximum = 0;
    for (int index = 0; index < values.length; index++) {
        if (values[index] > values[indexMaximum]) {
            indexMaximum = index;
        }
    }
    System.out.println("Maxiumum: value[" + indexMaximum + "] = " + values[indexMaximum]);
    }
 
}

Gibt es noch Klammerfehler, stimmt bei ...............println irgendetwas nicht.

Ich glaub er meint damit, dass am Schluss die beiden "}" zur Schließung der Main Methode sowie der Klasse fehlen.
 
@GEEK. Wunderbar, es funktioniert 🙂
Die eine Überflüssige System.out,println Zeile in der Mitte habe ich noch rausgenommen.
Was passiert genau in dieser for Schleife, er nimmt sich einen Wert aus dem Value und vergleicht jeweils?
Oder ist Max.Value doch schon eine definierte Funktion?
 
Ich verstehe diesen teil nicht:

Java:
            int max = Integer.MAX_VALUE;
        for(int wert: values) {
            if(wert>max)
                max = wert; 
        }

Du speicherst die MAX_VALUE (Die Größte Zahl, die ein INT aufnehmen kann) in max, gehst dann dein Array durch und guckst ob es irgendeine Zahl gibt die größer ist als dieses Maximum (was rein Logisch niemals so ist)...
 
Soweit ich das richtig erkenne dürfte es nicht Funktionieren, in Zeile 5 müsste folgendes stehen:
Code:
int max = Integer.MIN_VALUE;
 
Das wäre natürlich auch möglich.

Desweiteren verstehe ich nicht weswegen für die Ermittlung des Maximum und Index 2 for-Schleifen verwendet werden.
 
Java:
public class Maximum // Ermittle das Maximinum eines Arrays und den Index
    {
        public static void main (String[] args) {
            int [] values ={12,9,13,27,58,33,25,14,40,70,89,73};
            int max = Integer.MAX_VALUE;
        for(int wert: values) {
            if(wert>max)
                max = wert; 
        }
        int indexMaximum = 0;
        for (int index = 0; index < values.length; index++) {
        if (values[index] > values[indexMaximum]) {
            indexMaximum = index;
        }
    }
    System.out.println("Maxiumum: value[" + indexMaximum + "] = " + values[indexMaximum]);
    }
 
}

So funktioniert es jetzt , mit der Ausgabe value[10] =89
Bei normaler Zählung kämme cman aber auf die 11. Stelle, da man ja nicht bei 0 mit Zählen anfängt.
Den Index bei 1 starten zu lassen , ändert es aber nicht.
Da soll stehen value[11]=89
@camill: welche for Schleife könnte denn weg?
 
stimmt, hab ich heute früh aber nicht gut aufgepasst :>


Java:
public class Test // Ermittle das Maximinum eines Arrays und den Index
    {
        public static void main (String[] args) {
            int [] values ={12,9,13,27,58,33,25,14,40,70,89,73};
            
       
        int indexMaximum = 0;
        for (int index = 0; index < values.length; index++) {
        if (values[index] > values[indexMaximum]) {
            indexMaximum = index;
        }
    }
    System.out.println("Maxiumum: value[" + indexMaximum + "] = " + values[indexMaximum]);
    }
 
}

Das würde für das richtige Ergebnis reichen.
 
Java:
public class Maximum // Ermittle das Maximinum eines Arrays und den Index
    {
        public static void main (String[] args) {
            int [] values ={12,9,13,27,58,33,25,14,40,70,89,73};
            int max = Integer.MAX_VALUE;
        for(int wert: values) {
            if(wert>max)
                max = wert; 
        }
        int indexMaximum = 0;
        for (int index = 0; index < values.length; index++) {
        if (values[index] > values[indexMaximum]) {
            indexMaximum = index;
        }
    }
    System.out.println("Maxiumum: value[" + indexMaximum + "] = " + values[indexMaximum]);
    }
 
}

Da soll stehen value[11]=89

Dann suchst du aber nicht nach dem Index, denn der Index ist nunmal 10. Wenn du wissen willst auf der wievielten Position der höchste wert ist, rechne doch einfach den index + 1
 

Neue Themen


Zurück
Oben