Array Anzahl verschiedener Werte ausgeben

efeX101

Neues Mitglied
Hey Leute,
ich habe genau genommen zwei Probleme, aber das wichtigere zuerst. Ich soll einer Methode ein long Array übergeben und die Anzahl der verschiedenen Werte ausgeben. Aber ich kriege es einfach nicht hin die richtige Anzahl zu kriegen. Habe zwei for-Schleifen und eine if-Abfrage aber weiß nicht so recht wie weiter machen soll. Ich habe schon alles für mich erdenkliche ausprobiert. Hatte bisher noch nie Probleme mit Arrays aber hier verweifel ich 😀 Vielleicht hat einer von euch eine Idee?
Java:
public static int gibAnzahlVerschiedenerWerte(long [] ar)
{
//Hier standen sämtliche Variablen: "int counter =  0" oder auch ein Hilfsarray welches die Werte des übergebenen ...
// ...Arrays aufnehmen sollte: "long [] hilfsarray = new long [ar.length]
for (int i = ar.length-1; i >= 0; i--)
        {
            for (int j = 0; j < i; j++)
            {
                
                if (ar[j]!=ar[j+1])
                {
                    //hier standen alle möglichen Variationen
                }
            }
        }
        System.out.println(counter);
        return counter;
}

Ich hoffe ihr könnt mir helfen!

Beste Grüße efeX101
 
Okay ich habe die Antwort gefunden. Falls jemand in Zukunft sie benötigt stelle ich sie hier hoch.

Java:
public static int gibAnzahlVerschiedenerWerte(long [] ar)
    {
        int counter = 1;
        Arrays.sort(ar);
        for (int i = 0; i < ar.length-1; i++)
        {
            if (ar[i]!=ar[i+1])
            {
                counter++;
            }
        }
        System.out.println(counter);
        return counter;
    }

Ich habe das Array nun sortiert mit Arrays.sort aus java.util. Danach durchlaufe ich das array und stelle nur vergleiche zwischen 2 werten an. Für das richtige Ergebnis muss ich den Counter allerdings bei 1 beginnen lassen, da wir ja auch mindestens 1 "verschiedenen" Wert haben.
Trotzdem Danke falls sich jemand die Mühe machen wollte 🙂

Beste Grüße efeX101

Thema kann nun geclosed werden.
 
Ich würde die Werte in einen Set schreiben, denn darin sind keine Duplikate erlaubt.
Java:
import static org.junit.Assert.assertEquals;

import java.util.Set;
import java.util.TreeSet;

import org.junit.Test;

public class Distinct {

	@Test
	public void test() {
		long[] turtle = new long[] { 1, 2, 3, 4, 4, 3, 2, 1, 2, 3, 5 };
		assertEquals("Anzahl stimmt nicht", 5,
				Diff.gibAnzahlVerschiedenerWerte(turtle));
	}
}

class Diff {
	public static int gibAnzahlVerschiedenerWerte(long[] ar) {
		Set<Long> longSet = new TreeSet<>();
		for (long l : ar) {
			longSet.add(l);
		}
		return longSet.size();
	}
}
 
Zuletzt bearbeitet:

Zurück
Oben