Array TEst |
08.12.2014, 19:11 | Auf diesen Beitrag antworten » | ||||||||||
neuling96 | Array TEst Implementieren Sie eine statische Methode findeSubarray(int[] werte, int[] subarray) in Java, die zwei Integer-Arrays werte und subarray als Argument erh¨alt. Die Funktion soll testen, ob das Array subarray im Array werte zusammenhangend vorkommt. Die Methode soll true zur¨uckgeben, falls das Teilarray gefunden wurde, ansonsten false. Sie konnen davon ausgehen, dass beide Arrays eine Lange von mindestens 1 haben. ich hab das problem vereinfacht und angenommen sei q element von int[] subarray
Jetzt überprüft das Programm ob q in int[] werte. Das Problem ist, dass int[] subarray aus mehreren Elementen besteht!
|
||||||||||
|
|||||||||||
08.12.2014, 19:25 | Auf diesen Beitrag antworten » | ||||||||||
eulerscheZahl | Mal was ganz anderes: wie schaffst du es, dass die Klammersetzung so überhaupt nicht passt? Hast du keinen Compiler, um dein Werk zu testen? Dann würde ich an deiner Stelle damit anfangen. Für nur eine Zahl sieht es ok aus (von den Klammern abgesehen). Für mehrere Zahlen gibst du true zurück, wenn nur eine der Zahlen von subarray auch in werte vorkommt (angenommen, du startest bei m = 0). Außerdem geht das genauso gut iterativ (und der rekursive Ansatz ist immer langsamer). Und so würde ich vorgehen: Bsp.: werte = {1,2,3,1,2,3,4,1,2,3}, subarray = {2,3,4}
das subarray wird so lange weitergeschoben, bis es eine Übereinstimmung gibt oder man am Rand angekommen ist. |
||||||||||
08.12.2014, 19:59 | Auf diesen Beitrag antworten » | ||||||||||
neuling96 | public static findeSubarray(int[] werte, int[] subarray, int k ) int[] test= new [subarray.lenght]; test[k]=werte[k]; if (k>(werte.lenght-subarray.lenght)) return false; else return if (int[] test == int[] subarray) return true; else reutrn findeSubarray(int[] werte, int[] subarray, int[] test,k++ ) Von der Idee: für werte 1 2 3 1 2 3 4 1 2 3 und sei subarray 123 für int[] test und k =0 folgt int int[] test=(1, 2, 3) für k =1 int int[] test=(2 ,3 ,1) Ja die Klammersetzung ist ein großes Problem für mich.. i |
||||||||||
08.12.2014, 20:17 | Auf diesen Beitrag antworten » | ||||||||||
neuling96 |
|
||||||||||
Anzeige | |||||||||||
|
|||||||||||
09.12.2014, 08:16 | Auf diesen Beitrag antworten » | ||||||||||
eulerscheZahl | Da ist ja von der Syntax mehr falsch als richtig. Was soll das hier sein?
nach return kommt kein if mehr, da kommt das, was du zurückgeben willst int[] test hast du nur beim Erstellen der Variable, nicht beim Prüfen (das musst du wirklich für jeden Wert einzeln machen). Hinzu kommen Schreibfehler wie reutrn oder lenght (statt length). Die Rekursion wird so auch nicht funktionieren, weil du das k erst nach dem Aufruf inkrementierst. Du machst jetzt folgendes: du installierst dir das JDK (Java Developers Kit). Das bekommst du direkt von Oracle. Anschließend nimmst du einen Texteditor (z.B. notepad++) und die Kommandozeile oder du holst dir direkt eine IDE (eclipse oder netbeans). Damit versuchst du dann, die Fehlermeldungen loszuwerden und das Programm auszuführen. Wenn du nichts auf deinem Rechner installieren willst oder darfst, dann nimm einen Online Compiler. Suche dazu einfach bei der Suchmaschine deines Vertrauens nach "java online compiler". Aber ohne Syntaxprüfung und Compiler macht es wenig Sinn, eine Programmiersprache zu lernen. |
||||||||||
09.12.2014, 19:29 | Auf diesen Beitrag antworten » | ||||||||||
neuling96 | Code verbesser und als bouns ergänzt falls array länge =0
Von den grober Struktur müsste es stimmen, allerdings spukt der online Compiler immer noch error aus |
||||||||||
09.12.2014, 19:48 | Auf diesen Beitrag antworten » | ||||||||||
eulerscheZahl | aber es sieht schon viel besser aus Zeile 11: die kommt raus, da du das i in Zeile 13 erneut definierst Zeile 22: da kommt ein '}' (von Zeile 17) optional kannst du die Funktion noch als static deklarieren, dann lässt sie sich von der main aus aufrufen:
|
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |
|