Längstes tuple

#1

Hallo, ich muss Implementieren die Methode int searchMaxtuples(Random r, int[] numbers) und dieser Methode wird bereits ein Random-Objekt übergeben.Array wird mit Zufallszahlen zwischen 1 und 6 vom übergebenen Random-Objekt befüllt.Als nächstes soll meine Implementierung in dem befüllten Array die längste Sequenz gleicher, aufeinanderfolgender Zahlen ermitteln und anschließend zurückgeben. Ich hab mein Code geschrieben aber irgendwas geht nicht. Hat jemand eine Idee??

		
		int oberGrenze = 6;
		int pairCount = 1;
		int max = 0;
	
		for (int i = 0 ; i<numbers.length - 1; i++){
			numbers** = (r.nextInt(oberGrenze)+1);
			int leftInt = numbers**;
			int rightInt = numbers[i+1];
			if(leftInt == rightInt){
				pairCount++;
			}
				if(pairCount>max){
				max = pairCount;
			}
			
		}
		return max;
	}
	```
#2

‘irgendwas geht nicht’ irgendwie näher zu beschreiben?

ein Problem könnte sein, auf numbers[i+1] zuzugreifen, wenn gerademal numbers** einen Zufallswert bekommen hat…

und wenn paircount nie auf 0 zurückgesetzt wird…

aber ich verrate schon zuviel,
hier wäre auch möglich, einfach bei jedem Schritt anzuschauen, welche Werte gerade verglichen werden,
wie paircount aussieht usw.,
System.out.println() gibts umsonst und löst 95% aller Programmierprobleme weltweit

#3

Da sollte nichts falsches sein. Ich glaube das Problem sollte irgendwie bei max sein aber Danke!

#4

Worauf SlaterB raus wollte, war, dass du mal VOR der Zeile
if(leftInt == rightInt){
sowas wie

System.out.println("Vergleiche "+leftInt+" von Stelle "+i+" mit "+rightInt+" von Stelle "+(i+1)+" in Array "+Arrays.toString(numbers));

einfügen könntest, und dann vermutlich schon wüßtest, woran es liegt…

#5

vielleicht bringst Du erst mal den einfachsten aller denkbaren Tests zum Laufen:``` @Test
public void countConsecutiveNumbers__5(){
Random random = Mockito.mock(Random.class);
when(random.nextInt(anyInt())).thenReturn(1,1,1,1,1);
int expected = 5;
int[] numbers = new int[5];

int maxtuples = searchMaxtuples(random, numbers);

assertEquals(expected, maxtuples);
}```

der Test benötigt diese Libs:
junit-4.12.jar
hamcrest-core-1.3.jar
mockito-all-1.10.19.jar

am einfachsten bekommt man die, wenn man das Projekt als maven-Projekt aufsetzt:
diese pom.xml in das Projektverzeichnis copieren:[XML]
4.0.0

<groupId>de.bytewelt.tt</groupId>
<artifactId>ForumTest</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<dependencies>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>LATEST</version>
		<scope>test</scope>
	</dependency>
	<dependency>
		<groupId>org.mockito</groupId>
		<artifactId>mockito-all</artifactId>
		<version>1.10.19</version>
		<scope>test</scope>
	</dependency>
</dependencies>
<build>
	<plugins>
		<plugin>
			<inherited>true</inherited>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>2.5.1</version>
			<configuration>
				<source>1.8</source>
				<target>1.8</target>
				<encoding>UTF-8</encoding>
				<showWarnings>true</showWarnings>
				<showDeprecation>true</showDeprecation>
			</configuration>
		</plugin>
	</plugins>
</build>

[/XML]und im Kontextmenü des Projekts “Configure -> Conver to Maven Project” auswählen.

bye
TT

#6

(Der Kontrast zwischen den letzten beiden Postings ist unterhaltsam :smiley: )

#7

[quote=Marco13](Der Kontrast zwischen den letzten beiden Postings ist unterhaltsam )[/quote]Sicher, aber mit “echten” Random-Ergebnissen Fehler zu suchen ist reichlich mühsam. Da lohnt es sich mal ein Blick auf JUnit und Mockito zu werfen.

bye
TT

#8

oder die Methode doch testweise so umzubauen, dass Random nicht verwendet wird, sondern ein fertiges [1, 1, 1, 1, 1]-Array? :wink:

der Vorschlag mit den Libs ist nur mit Mühe (und vor allem Güte) nicht als realitätsfremd zu verreißen
(stärker als in diesen Andeutungen dann doch schon)

#9

[quote=SlaterB]oder die Methode doch testweise so umzubauen, dass Random nicht verwendet wird, sondern ein fertiges [1, 1, 1, 1, 1]-Array?[/quote]Nein, denn dann findet er einen der beiden Fehler nicht, und zwar den schlimmeren von beiden.

[OT][quote=SlaterB;135574]der Vorschlag mit den Libs ist nur mit Mühe (und vor allem Güte) nicht als realitätsfremd zu verreißen
(stärker als in diesen Andeutungen dann doch schon)[/quote]Soso, Du nennst also mein täglich Brot “realitätsfern”…[/OT]
bye
TT

#10

new Random(0) oder fertiger array, Optionen gibt es genug. Ansonsten … auch Unit-Tests und Mocking ersetzen keinen debugger und System.out. Man kann da zwar auch daneben liegen, aber … es kann wohl nicht schaden, zumindest zu versuchen, Antworten an den Kenntnisstand des Fragestellers anzupassen…